Not in the top 1,000 by GitHub stars
dreamiurg/claude-mountaineering-skills
Automates mountain route research for North American peaks. Aggregates data from 10+ mountaineering sources to generate detailed route beta reports with weather, avalanche conditions, and trip reports.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/route-researcher/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
4dd512b7ffd9 → 4dd512b7ffd9
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 4dd512b7ffd9
No earlier version was observed for comparison.
Verified commit 4dd512b7ffd901a7cd4df3724eba36b06dea32dc
git clone --filter=blob:none --no-checkout https://github.com/dreamiurg/claude-mountaineering-skills.git .hotskills/dreamiurg-claude-mountaineering-skills && git -C .hotskills/dreamiurg-claude-mountaineering-skills checkout --detach 4dd512b7ffd901a7cd4df3724eba36b06dea32dc
# Copy each selected skill directory from .hotskills/dreamiurg-claude-mountaineering-skills into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/dreamiurg/claude-mountaineering-skills.git .hotskills/dreamiurg-claude-mountaineering-skills && git -C .hotskills/dreamiurg-claude-mountaineering-skills checkout --detach 4dd512b7ffd901a7cd4df3724eba36b06dea32dc
# Copy each selected skill directory from .hotskills/dreamiurg-claude-mountaineering-skills into .agents/skills/<skill-name>/Heat
0.3- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- route-researcher
skills/route-researcher
How it works
route-researcher
When your agent uses it
Research mountain routes and generate comprehensive route beta reports for North American peaks, aggregating weather forecasts, avalanche conditions, daylight windows, trip reports, and access info from PeakBagger, SummitPost, WTA, AllTrails, and regional avalanche centers. Use when planning a climb, hike, or scramble, or when asked for route beta, trail conditions, peak research, or mountaineering trip planning.
What it loads into context
Frontmatter
91 tokensAlways available to the agent
SKILL.md
11,734 tokensWhen the skill is activated
Reference documents
30,988 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use This Skill
- Progress Checklist
- Orchestration Workflow
- SummitPost Research
- Trip Report Extraction
- Output Format (return EXACTLY this JSON)
- Mountaineers Research (use the Mountaineers MCP FIRST — do not scrape)
- NWHikers Research (northwesthikers.net / nwhikers.net)
- Hike of the Week (hikeoftheweek.com — REQUIRES --render)
- Oregon Hikers Field Guide (oregonhikers.org — Oregon objectives only)
- Cascade Climbers (cascadeclimbers.com)
- Mountain Project (for technical/rock sections)
- Fallback
- Trip Report Extraction
- Output Format (return EXACTLY this JSON)
- Output Format (return EXACTLY this JSON)
- Error Handling Principles
- Execution Timeouts
- Quality Principles
- Implementation Notes
Scripts executed separately
tools/cloudscrape.pytools/fetch_conditions.pytools/test_cloudscrape.pytools/test_fetch_conditions.pytools/test_fetch_conditions_unit.pytools/test_geodata_fetchers.pytools/test_phase4.pytools/test_phase5.py
Files
../../.claude-plugin/hooks.jsonasset197 bytes../../.claude-plugin/marketplace.jsonasset864 bytes../../.claude-plugin/plugin.jsonasset823 bytes../../.claude-plugin/schemas/marketplace.schema.jsonasset2,851 bytes../../.claude-plugin/schemas/plugin.schema.jsonasset1,227 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesSKILL.mdcore46,611 bytesassets/demo.gifasset4,261,689 bytesassets/report-template.mddoc26,186 bytesassets/trip-report-template.mddoc2,846 bytesdocs/architecture.mddoc11,347 bytesexamples/2025-10-23-mount-si.mddoc14,015 bytesexamples/2025-11-06-mount-adams.mddoc17,335 bytesexamples/2025-11-06-wolf-peak.mddoc13,246 bytesexamples/2026-01-29-mount-shuksan.mddoc13,074 bytesexamples/2026-01-29-tinkham-peak.mddoc13,355 bytestools/.python-versionasset5 bytestools/README.mddoc10,330 bytestools/cloudscrape.pyruns6,243 bytestools/fetch_conditions.pyruns35,278 bytestools/pyproject.tomlasset443 bytestools/test_cloudscrape.pyruns10,813 bytestools/test_fetch_conditions.pyruns3,632 bytestools/test_fetch_conditions_unit.pyruns555 bytestools/test_geodata_fetchers.pyruns23,785 bytestools/test_phase4.pyruns13,838 bytestools/test_phase5.pyruns18,389 bytestools/uv.lockasset32,149 bytes
Read SKILL.md
# Route Researcher
Research mountain peaks across North America and generate comprehensive route beta reports combining data from multiple sources including PeakBagger, SummitPost, WTA, AllTrails, weather forecasts, avalanche conditions, and trip reports.
**Data Sources:** This skill aggregates information from specialized mountaineering websites (PeakBagger, SummitPost, Washington Trails Association, AllTrails, The Mountaineers, and regional avalanche centers). The quality of the generated report depends on the availability of information on these sources. If your target peak lacks coverage on these websites, the report may contain limited details. The skill works best for well-documented peaks in North America.
## When to Use This Skill
Use this skill when the user requests:
- Research on a specific mountain peak
- Route beta or climbing information
- Trip planning information for peaks
- Current conditions for mountaineering objectivesView the complete source on GitHubSkills included
- route-researcher
Repository facts
- License
- MIT
- Created
- Oct 20, 2025
- Last pushed
- Jul 27, 2026
- Forks
- 1
- Open issues
- 15
- Project activity
- Slowing
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 7, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 30 notes
skills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/route-researcher/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 466 network referencesin 18 files: route-researcher/tools/uv.lock:10 route-researcher/examples/2025-10-23-mount-si.md:25 route-researcher/tools/fetch_conditions.py:18 and 15 more
- No hidden or obfuscated text
- No instruction overrides
- 8 executable scriptsin 8 files: route-researcher/tools/cloudscrape.py:1 route-researcher/tools/fetch_conditions.py:1 route-researcher/tools/test_cloudscrape.py:1 and 5 more
- No access to secrets
- No requests to vote in Hot
Show all 474 signals by file
.claude-plugin/marketplace.json
- Network accessline 4
"owner": { "name": "dreamiurg", "url": "https://github.com/dreamiurg" - Network accessline 5
"name": "dreamiurg", "url": "https://github.com/dreamiurg" }, - Network accessline 6
"url": "https://github.com/dreamiurg" - Network accessline 11
"source": { "source": "url", "url": "https://github.com/dreamiurg/claude-mountaineering-skills.git" - Network accessline 12
"source": "url", "url": "https://github.com/dreamiurg/claude-mountaineering-skills.git" }, - Network accessline 13
"url": "https://github.com/dreamiurg/claude-mountaineering-skills.git"
.claude-plugin/plugin.json
- Network accessline 7
"email": "dreamiurg@users.noreply.github.com" }, "homepage": "https://github.com/dreamiurg/claude-mountaineering-skills", - Network accessline 8
}, "homepage": "https://github.com/dreamiurg/claude-mountaineering-skills", "repository": "https://github.com/dreamiurg/claude-mountaineering-skills", - Network accessline 9
"homepage": "https://github.com/dreamiurg/claude-mountaineering-skills", - Network accessline 10
"repository": "https://github.com/dreamiurg/claude-mountaineering-skills",
.claude-plugin/schemas/marketplace.schema.json
.claude-plugin/schemas/plugin.schema.json
skills/route-researcher/SKILL.md
- Network accessline 32
- [ ] Phase 2: Peak Information Retrieval (coordinates and details obtained) - [ ] Phase 3: Data Gathering (parallel execution) - [ ] Phase 3a: Python conditions fetch (weather, air quality, daylight, avalanche, peakbagger stats/ascents) - Network accessline 33
- [ ] Phase 3: Data Gathering (parallel execution) - [ ] Phase 3a: Python conditions fetch (weather, air quality, daylight, avalanche, peakbagger stats/ascents) - [ ] Phase 3b: Researcher agents (3 in parallel - web sources + trip repor - Network accessline 34
- [ ] Phase 3a: Python conditions fetch (weather, air quality, daylight, avalanche, peakbagger stats/ascents) - Network accessline 56
uvx --with patchright --from "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0" peakbagger peak search "{peak_name}" --format json - Network accessline 103
uvx --with patchright --from "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0" peakbagger peak show {peak_id} --format json - Network accessline 192
uvx --with patchright --from "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0" peakbagger peak ascents {peak_id} --format json --with-tr --limit 20 - Network accessline 199
uvx --with patchright --from "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0" peakbagger ascent show {ascent_id} --format json - Network accessline 441
1. **State DOT pass report** (WA → WSDOT): fetch the relevant pass page, e.g. `https://wsdot.com/travel/real-time/mountainpasses/mt.-baker` (SR-542) or `.../north-cascades` (SR-20). Read `RoadCondition` / `TravelAdvisoryActive` / restrictio - Network accessline 442
2. **USFS forest alerts/conditions**: fetch `https://www.fs.usda.gov/{region}/{forest-shortname}/alerts` (e.g. `r06/mbs/alerts`) and `/conditions`; search the page for the road number / trailhead name → closure milepost, reason, seasonal ga - Network accessline 443
3. **NPS road conditions** (if in/through a national park): fetch `https://www.nps.gov/{park-code}/planyourvisit/road-conditions.htm` (e.g. `noca`, `mora`, `olym`) → per-road OPEN/CLOSED + milepost. - Network accessline 484
**Example (Route Description):** > "The standard route follows the East Ridge (Class 3). A [Sep 2025 party](https://www.peakbagger.com/climber/ascent.aspx?aid=12345) found a well-cairned use trail branching right at 4,800 ft—the correct tur - Network accessline 485
> "The standard route follows the East Ridge (Class 3). A [Sep 2025 party](https://www.peakbagger.com/climber/ascent.aspx?aid=12345) found a well-cairned use trail branching right at 4,800 ft—the correct turn—through talus they called 'tedi - Network accessline 526
- Google Maps **place** (named entity): `https://www.google.com/maps/search/?api=1&query={URL-encoded name + address}` — use this (not bare coordinates) for hospitals, ranger stations, campgrounds, and any named place, so the link resolves - Network accessline 527
- Gaia GPS: `https://www.gaiagps.com/map/?loc=14/{lon}/{lat}` (zoom/lon/lat). - Network accessline 528
- CalTopo: `https://caltopo.com/map.html#ll={lat},{lon}&z=14&b=mbt`. - Network accessline 826
uvx --with patchright --from "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0" peakbagger <command> --format json - Network accessline 864
https://www.google.com/maps/search/?api=1&query={latitude},{longitude} - Network accessline 870
https://caltopo.com/map.html#ll={latitude},{longitude}&z=14&b=mbt - Network accessline 876
https://www.gaiagps.com/map/?loc=14/{longitude}/{latitude} - Network accessline 882
https://peakvisor.com/hiking-map?custom=14%2F{latitude}%2F{longitude}#14/{latitude}/{longitude} - Network accessline 887
- Google Maps: `https://www.google.com/maps/search/?api=1&query=48.7768,-121.8144` - Network accessline 888
- CalTopo: `https://caltopo.com/map.html#ll=48.7768,-121.8144&z=14&b=mbt` - Network accessline 889
- Gaia GPS: `https://www.gaiagps.com/map/?loc=14/-121.8144/48.7768` - Network accessline 890
- PeakVisor: `https://peakvisor.com/hiking-map?custom=14%2F48.7768%2F-121.8144#14/48.7768/-121.8144` - Network accessline 899
https://www.google.com/maps/search/?api=1&query={latitude},{longitude} - Network accessline 902
Example: `https://www.google.com/maps/search/?api=1&query=48.5123,-121.0456` - Network accessline 907
https://www.google.com/maps/search/?api=1&query={trailhead_name}+{state} - Network accessline 910
Example: `https://www.google.com/maps/search/?api=1&query=Cascade+Pass+Trailhead+WA`
skills/route-researcher/assets/report-template.md
- Network accessline 64
- [NPS road conditions]({nps_roads_link}) — if accessed via a national park - [CalTopo]({caltopo_trailhead_link}) (enable "Closures" layer) · [Google Maps]({google_maps_trailhead_link}) - [Recreation.gov](https://www.recreation.gov/) — perm - Network accessline 65
- [CalTopo]({caltopo_trailhead_link}) (enable "Closures" layer) · [Google Maps]({google_maps_trailhead_link}) - [Recreation.gov](https://www.recreation.gov/) — permits/reservations - {Ranger station phone — for direct confirmation when web - Network accessline 66
- [Recreation.gov](https://www.recreation.gov/) — permits/reservations - Network accessline 73
{Build the table below. Link each **Resource name** to its official website if available, otherwise to a Google Maps **place** search by name + address — `https://www.google.com/maps/search/?api=1&query={URL-encoded name + address}` — NOT b - Network accessline 92
| Campground | Distance | Type | Operator | Map | |------------|----------|------|----------|-----| | [{name}]({website_or_google_maps_place}) | {distance_miles} mi | {camp_type or —} | {operator or —} | [Google Maps](https://www.google.com - Network accessline 94
| [{name}]({website_or_google_maps_place}) | {distance_miles} mi | {camp_type or —} | {operator or —} | [Google Maps](https://www.google.com/maps/search/?api=1&query={lat},{lon}) · [Gaia](https://www.gaiagps.com/map/?loc=14/{lon}/{lat}) | - Network accessline 98
**Location-linking rule (applies report-wide):** Every named place this report brings up — campground, backcountry/high camp, bivy site, trailhead, named feature — MUST be accompanied by map links: at minimum [Google Maps] and [Gaia GPS]. B - Network accessline 233
{If not available:} Daylight calculations not available. Check sunrise/sunset times for your planned date at [Sunrise-Sunset.org](https://sunrise-sunset.org/us/{location}) or [TimeAndDate.com](https://www.timeanddate.com/sun/). - Network accessline 234
Daylight calculations not available. Check sunrise/sunset times for your planned date at [Sunrise-Sunset.org](https://sunrise-sunset.org/us/{location}) or [TimeAndDate.com](https://www.timeanddate.com/sun/). - Network accessline 328
- [Open-Meteo Weather]({open_meteo_weather_link}) - Detailed mountain weather data (source for this report) - [Open-Meteo Air Quality]({open_meteo_air_quality_link}) - Air quality forecast for this location - [Windy](https://www.windy.com/? - Network accessline 330
- [Windy](https://www.windy.com/?{latitude},{longitude},10) - Visual wind/precip map - Network accessline 334
- [NWAC Mountain Weather](https://nwac.us/mountain-weather-forecast/) - Network accessline 349
{If not available:} **Avalanche forecast not available.** Check [NWAC.us](https://nwac.us) for current conditions. - Network accessline 350
**Avalanche forecast not available.** Check [NWAC.us](https://nwac.us) for current conditions. - Network accessline 405
- [PeakBagger Ascents](https://www.peakbagger.com/climber/PeakAscents.aspx?pid={peak_id}) - Individual climb logs with optional GPX tracks and reports - Network accessline 449
*Research completed {timestamp} using [route-researcher v{version}](https://github.com/dreamiurg/claude-mountaineering-skills/tree/main/skills/route-researcher) from the [Claude Mountaineering Skills](https://github.com/dreamiurg/claude-mou
skills/route-researcher/assets/trip-report-template.md
- Network accessline 3
> Generated with the [mountaineering route-researcher skill](https://github.com/dreamiurg/claude-mountaineering-skills).
skills/route-researcher/examples/2025-10-23-mount-si.md
- Network accessline 25
Mount Si rises to **4,192 ft (1,278 m)** with 304 ft (93 m) of prominence in the Cascade Range, Washington. The peak is located at 47.506875°N, -121.738965°W ([Google Maps](https://www.google.com/maps/search/?api=1&query=47.506875,-121.7389 - Network accessline 29
**Sources:** [PeakBagger](https://www.peakbagger.com/peak.aspx?pid=2087), [AllTrails](https://www.alltrails.com/trail/us/washington/mount-si-trail), [WTA](https://www.wta.org/go-hiking/hikes/mount-si), [SummitPost](https://www.summitpost.or - Network accessline 37
**Directions:** From I-90, take exit 32 and turn left onto 436th Ave SE. Follow to its end at SE North Bend Way and turn left. In 0.3 miles, turn right onto SE Mt. Si Road and follow 2.4 miles to the large trailhead parking lot on the left. - Network accessline 103
- [Mountain-Forecast.com](https://www.mountain-forecast.com/peaks/Mount-Si/forecasts/1278) - Summit-level forecast with multiple elevations - Network accessline 104
- [Open-Meteo Weather](https://open-meteo.com/en/docs#latitude=47.506875&longitude=-121.738965&elevation=1278&hourly=&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto) - Detailed mountain weather data (source for - Network accessline 105
- [Open-Meteo Air Quality](https://open-meteo.com/en/docs/air-quality-api#latitude=47.506875&longitude=-121.738965&hourly=&daily=&timezone=auto) - Air quality forecast for this location - Network accessline 106
- [NOAA Point Forecast](https://forecast.weather.gov/MapClick.php?textField1=47.506875&textField2=-121.738965) - Official NWS forecast and alerts - Network accessline 116
- **2025-10-07** - [Netherly - Mount Si via Mount Teneriffe Trail](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-10-08.141759527204) - Network accessline 117
- **2025-09-26** - [ChristinaL - Mount Si](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-27.091903021314) - Network accessline 118
- **2025-09-24** - [HikerCass - Mount Si](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-24.173643149150) - Network accessline 119
- **2025-09-20** - [mollywc - Mount Si](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-27.154843755618) - Network accessline 120
- **2025-09-14** - [TheOFamily - Mount Si (Cougar sighting)](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-14.143957154905) - Network accessline 124
- **2025-01-14** - [Emma Meersman](https://www.peakbagger.com/climber/ascent.aspx?aid=2746168) - 📝 52 words, 📍 GPX - Network accessline 125
- **2025-03-03** - [Wendy Kahn](https://www.peakbagger.com/climber/ascent.aspx?aid=2978055) - 📝 11 words - Network accessline 126
- **2025-03-14** - [Paul Pottorff](https://www.peakbagger.com/climber/ascent.aspx?aid=2917662) - 📝 9 words - Network accessline 130
- **2025-10-07** - [WTA: Netherly](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-10-08.141759527204) - Network accessline 131
- **2025-09-26** - [WTA: ChristinaL](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-27.091903021314) - Network accessline 132
- **2025-09-24** - [WTA: HikerCass](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-24.173643149150) - Network accessline 133
- **2025-09-20** - [WTA: mollywc](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-27.154843755618) - Network accessline 134
- **2025-09-14** - [WTA: TheOFamily - Cougar sighting](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-14.143957154905) - Network accessline 138
- [PeakBagger Ascents](https://www.peakbagger.com/climber/PeakAscents.aspx?pid=2087) - Individual climb logs with optional GPX tracks and reports - Network accessline 139
- [Washington Trails Association](https://www.wta.org/go-hiking/hikes/mount-si) - User-submitted trip reports with photos and conditions (2,815+ reports) - Network accessline 140
- [Mountaineers.org](https://www.mountaineers.org/activities/routes-places/mount-si-main-trail) - Route information and trip reports - Network accessline 141
- [AllTrails](https://www.alltrails.com/trail/us/washington/mount-si-trail) - User reviews and recent activity (18,339 reviews) - Network accessline 142
- [SummitPost](https://www.summitpost.org/mount-si/150709) - Route-specific trip reports and photos - Network accessline 156
**Trailhead Direct:** Seasonal weekend bus service from Seattle (16th Ave E & E Denny Way) to Mount Si, Mount Teneriffe, and Little Si trailheads. Check [trailheaddirect.org](https://trailheaddirect.org/mount-si/) for current schedules. - Network accessline 167
- PeakBagger: https://www.peakbagger.com/peak.aspx?pid=2087 - Network accessline 168
- Washington Trails Association: https://www.wta.org/go-hiking/hikes/mount-si - Network accessline 169
- SummitPost: https://www.summitpost.org/mount-si/150709 - Network accessline 170
- Mountaineers: https://www.mountaineers.org/activities/routes-places/mount-si-main-trail - Network accessline 171
- Open-Meteo Weather API: https://open-meteo.com - Network accessline 172
- Open-Meteo Air Quality API: https://air-quality-api.open-meteo.com - Network accessline 173
- NOAA/NWS: https://forecast.weather.gov - Network accessline 174
- Sunrise-Sunset.org API: https://sunrise-sunset.org - Network accessline 178
*Research completed 2025-10-23 using [route-researcher v3.0.0](https://github.com/dreamiurg/claude-mountaineering-skills/tree/main/skills/route-researcher) from the [Claude Mountaineering Skills](https://github.com/dreamiurg/claude-mountain
skills/route-researcher/examples/2025-11-06-mount-adams.md
- Network accessline 31
- **Isolation:** 45.75 miles (73.63 km) - **Location:** Yakima County, Washington, Cascade Range - **Coordinates:** 46.202494, -121.490746 ([Google Maps](https://www.google.com/maps/search/?api=1&query=46.202494,-121.490746) | [USGS Topo](h - Network accessline 32
- **Location:** Yakima County, Washington, Cascade Range - **Coordinates:** 46.202494, -121.490746 ([Google Maps](https://www.google.com/maps/search/?api=1&query=46.202494,-121.490746) | [USGS Topo](https://ngmdb.usgs.gov/topoview/viewer/#1 - Network accessline 33
- **Coordinates:** 46.202494, -121.490746 ([Google Maps](https://www.google.com/maps/search/?api=1&query=46.202494,-121.490746) | [USGS Topo](https://ngmdb.usgs.gov/topoview/viewer/#17/46.202494/-121.490746)) - Network accessline 34
- **PeakBagger:** [Mount Adams](https://www.peakbagger.com/peak.aspx?pid=2365) - Network accessline 46
**Directions:** [View on Google Maps](https://www.google.com/maps/search/?api=1&query=Cold+Springs+Campground+WA) - Network accessline 157
- [Open-Meteo Weather](https://open-meteo.com/en/docs#latitude=46.202494&longitude=-121.490746&elevation=3743&hourly=&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto) - Network accessline 158
- [Open-Meteo Air Quality](https://open-meteo.com/en/docs/air-quality-api#latitude=46.202494&longitude=-121.490746&hourly=&daily=&timezone=auto) - Network accessline 159
- [NOAA Point Forecast](https://forecast.weather.gov/MapClick.php?textField1=46.202494&textField2=-121.490746) - Network accessline 160
- [NWAC Mountain Weather](https://nwac.us/mountain-weather-forecast/) - Network accessline 170
- [Northwest Avalanche Center (NWAC)](https://nwac.us) - Check the Mt Adams East zone - Network accessline 200
- **2025-09-27** - [Paul Pottorff](https://www.peakbagger.com/climber/ascent.aspx?aid=3000345) - Late season ascent. Water plentiful up to Pikers Peak. Microspikes on approach shoes caused toe issues on steep rock descent. Emphasized helmet - Network accessline 202
- **2025-08-31** - [Abraham Guz](https://www.peakbagger.com/climber/ascent.aspx?aid=2967425) - Alpine start from Lunch Counter (3 AM). Mixed rock and snow route. Fairly icy conditions - some with microspikes wished they had crampons. Route- - Network accessline 204
- **2025-08-05** - [Ben Caseley](https://www.peakbagger.com/climber/ascent.aspx?aid=2932434) - Late afternoon start to Lunch Counter, late summit start next day (8:30 AM). Glissade chute from Pikers melting out and becoming too fast with li - Network accessline 206
- **2025-07-26** - [Cam Smith](https://www.peakbagger.com/climber/ascent.aspx?aid=2918617) - Started 3 AM from Cold Springs. Strong winds above 7,400 ft requiring layers the entire time. Snow from 8,000 ft, crampons on. Lunch Counter had ~3 - Network accessline 208
- **2025-07-19** - [Anisa Daher](https://www.peakbagger.com/climber/ascent.aspx?aid=2909281) - Trail runner approach, boot swap at snow field after main switchback. Boot pack to false summit semi-easy to find. Flat traverse to dirt switchba - Network accessline 212
- **PeakBagger:** [Mount Adams Climber's Log](https://www.peakbagger.com/climber/climber.aspx?pid=2365) - 651 trip reports available - Network accessline 213
- **Washington Trails Association:** [Mount Adams South Climb Trip Reports](https://www.wta.org/go-hiking/hikes/mount-adams-south-climb) - Network accessline 214
- **SummitPost:** [Mount Adams Trip Reports](https://www.summitpost.org/mount-adams/trip-reports/150198) - Network accessline 215
- **AllTrails:** [Mount Adams South Climb Reviews](https://www.alltrails.com/trail/us/washington/mount-adams-south-climb-trail) - 2,430 reviews - Network accessline 236
- Cost: $20 per person (16 years and older) for single climbing trip - Free for children under 16 - **Purchase online:** [Recreation.gov](https://www.recreation.gov/activitypass/4280e9ae-d010-11ea-8e82-82c0c22bed90) - Network accessline 238
- **Purchase online:** [Recreation.gov](https://www.recreation.gov/activitypass/4280e9ae-d010-11ea-8e82-82c0c22bed90) - Network accessline 286
- Roads typically clear May-September - Expect snow closures approximately October-April - Check current conditions with Gifford Pinchot National Forest: [Road Conditions](https://www.fs.usda.gov/r06/giffordpinchot/recreation/trailhead-sout - Network accessline 288
- Check current conditions with Gifford Pinchot National Forest: [Road Conditions](https://www.fs.usda.gov/r06/giffordpinchot/recreation/trailhead-south-climb) - Network accessline 301
- **PeakBagger:** [Mount Adams](https://www.peakbagger.com/peak.aspx?pid=2365) - Network accessline 302
- **PeakBagger CLI:** Peak data, ascent statistics, and trip reports (v1.7.0) - **Washington Trails Association:** [Mount Adams South Climb](https://www.wta.org/go-hiking/hikes/mount-adams-south-climb) - **The Mountaineers:** [Mount Adams/S - Network accessline 303
- **Washington Trails Association:** [Mount Adams South Climb](https://www.wta.org/go-hiking/hikes/mount-adams-south-climb) - Network accessline 304
- **The Mountaineers:** [Mount Adams/South Spur](https://www.mountaineers.org/activities/routes-places/mount-adams-south-spur) - Network accessline 305
- **AllTrails:** [Mount Adams South Climb Trail](https://www.alltrails.com/trail/us/washington/mount-adams-south-climb-trail) - Network accessline 306
- **SummitPost:** [Mount Adams](https://www.summitpost.org/mount-adams/150198) - Network accessline 310
- **NOAA/National Weather Service:** Supplemental weather data - **Recreation.gov:** Permit information - **US Forest Service:** [Gifford Pinchot National Forest - Mt. Adams](https://www.fs.usda.gov/r06/giffordpinchot/recreation/trailhead-s - Network accessline 312
- **US Forest Service:** [Gifford Pinchot National Forest - Mt. Adams](https://www.fs.usda.gov/r06/giffordpinchot/recreation/trailhead-south-climb)
skills/route-researcher/examples/2025-11-06-wolf-peak.md
- Network accessline 25
Wolf Peak rises to **5,813 ft (1,772 m)** with 257 ft (78 m) of prominence in the Snohomish County, Washington Cascades. The peak is located at 48.016465°N, -121.513745°W ([Google Maps](https://www.google.com/maps/search/?api=1&query=48.016 - Network accessline 29
**Sources:** [PeakBagger](https://www.peakbagger.com/peak.aspx?pid=52059), [Mountaineers](https://www.mountaineers.org/activities/routes-places/vesper-sperry-wolf-peaks), [WTA](https://www.wta.org/go-hiking/hikes/vesper-peak) - Network accessline 37
**Directions:** From Granite Falls, drive the Mountain Loop Highway approximately 28 miles east, then turn right onto Sunrise Mine Road (Forest Road 4065) for 2.3 miles to its end at the Sunrise Mine Trailhead. [View on Google Maps](https:/ - Network accessline 123
- [Mountain-Forecast.com](https://www.mountain-forecast.com/peaks/Wolf-Peak-Washington/forecasts/1772) - Summit-level forecast with multiple elevations - Network accessline 124
- [Open-Meteo Weather](https://open-meteo.com/en/docs#latitude=48.016465&longitude=-121.513745&elevation=1772&hourly=&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto) - Detailed mountain weather data (source for - Network accessline 125
- [Open-Meteo Air Quality](https://open-meteo.com/en/docs/air-quality-api#latitude=48.016465&longitude=-121.513745&hourly=&daily=&timezone=auto) - Air quality forecast for this location - Network accessline 126
- [NOAA Point Forecast](https://forecast.weather.gov/MapClick.php?textField1=48.016465&textField2=-121.513745) - Official NWS forecast and alerts - Network accessline 127
- [NWAC Mountain Weather](https://nwac.us/mountain-weather-forecast/) - Mountain weather forecast for Cascades - Network accessline 131
**Avalanche forecast not available.** The peak is at moderate elevation (5,813 ft) but does feature steep terrain above Vesper Lake. During winter months (November-April), check [NWAC.us](https://nwac.us) for current avalanche conditions in - Network accessline 141
- **2025-09-25** - [Dmytro Gaivoronsky](https://www.peakbagger.com/climber/ascent.aspx?aid=2996186) - 📝 200 words, 📍 GPX - Network accessline 142
- **2025-08-31** - [Zachary Richardson](https://www.peakbagger.com/climber/ascent.aspx?aid=2966508) - 📝 19 words, 📍 GPX - Network accessline 143
- **2025-08-18** - [Ricky Han](https://www.peakbagger.com/climber/ascent.aspx?aid=2951146) - 📝 31 words, 📍 GPX - Network accessline 144
- **2025-08-08** - [Nick 🏞<U+FE0F>](https://www.peakbagger.com/climber/ascent.aspx?aid=2934575) - 📝 28 words - Network accessline 148
- **2025-11-02** - [gobozov - Vesper Peak trip (winter conditions)](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-11-02.222647712135) - Network accessline 149
- **2025-10-21** - [Veronica84 - Vesper Peak trip (snow conditions)](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-10-21.161641757167) - Network accessline 150
- **2024-08-13** - [Wolf Peak traverse in fog](https://www.wta.org/go-hiking/trip-reports/trip_report-2024-08-13.114053402236) - Network accessline 151
- **2022-09-25** - [Vesper, Sperry & Wolf Peaks traverse](https://www.wta.org/go-hiking/trip-reports/trip_report.2022-09-25.0747962189) - Network accessline 155
- [PeakBagger Ascents](https://www.peakbagger.com/climber/PeakAscents.aspx?pid=52059) - Individual climb logs with optional GPX tracks and reports - Network accessline 156
- [Washington Trails Association](https://www.wta.org/go-hiking/hikes/vesper-peak) - User-submitted trip reports with photos and conditions - Network accessline 157
- [Mountaineers.org](https://www.mountaineers.org/activities/routes-places/vesper-sperry-wolf-peaks) - Route information and trip reports - Network accessline 169
- PeakBagger: https://www.peakbagger.com/peak.aspx?pid=52059 - Network accessline 170
- Mountaineers.org: https://www.mountaineers.org/activities/routes-places/vesper-sperry-wolf-peaks - Network accessline 171
- Washington Trails Association: https://www.wta.org/go-hiking/hikes/vesper-peak - Network accessline 172
- SummitPost: https://www.summitpost.org/wolf-peak/971797 - Network accessline 179
*Research completed 2025-11-06 using [route-researcher v1.0.0](https://github.com/dreamiurg/claude-mountaineering-skills/tree/main/skills/route-researcher) from the [Claude Mountaineering Skills](https://github.com/dreamiurg/claude-mountain
skills/route-researcher/examples/2026-01-29-mount-shuksan.md
- Network accessline 25
Mount Shuksan rises to **9,129 ft (2,783 m)** with 4,404 ft (1,342 m) of prominence in Washington State, North Cascades. The peak is located at 48.831095, -121.602955 ([Google Maps](https://www.google.com/maps/search/?api=1&query=48.831095, - Network accessline 29
**Sources:** [PeakBagger](https://www.peakbagger.com/peak.aspx?pid=1630), [WTA](https://www.wta.org/go-hiking/hikes/mt-shuksan), [SummitPost](https://www.summitpost.org/mount-shuksan/150347), [AllTrails](https://www.alltrails.com/trail/us/w - Network accessline 37
**Directions:** [View on Google Maps](https://www.google.com/maps/search/?api=1&query=Shannon+Ridge+Trailhead+WA) - Network accessline 137
- [Mountain-Forecast.com](https://www.mountain-forecast.com/peaks/Mount-Shuksan/forecasts/2783) - Summit-level forecast - Network accessline 138
- [Open-Meteo Weather](https://open-meteo.com/en/docs#latitude=48.831095&longitude=-121.602955&elevation=2783&hourly=&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto) - Detailed mountain weather data - Network accessline 139
- [NOAA Point Forecast](https://forecast.weather.gov/MapClick.php?textField1=48.831095&textField2=-121.602955) - Official NWS forecast - Network accessline 140
- [NWAC Mountain Weather](https://nwac.us/mountain-weather-forecast/) - Cascades mountain weather - Network accessline 148
**Check [NWAC North Cascades Avalanche Forecast](https://nwac.us/avalanche-forecast/#north-cascades) for current danger ratings by elevation band.** - Network accessline 158
- **2025-09-05** - [Cam Smith](https://www.peakbagger.com/climber/ascent.aspx?aid=2973475) - 📝 278 words, 📍 GPX - Detailed late season beta: bare ice conditions, crevasse navigation, SE Ridge route - Network accessline 159
- **2026-01-19** - [Zachary Richardson](https://www.peakbagger.com/climber/ascent.aspx?aid=3101256) - 📝 114 words - Winter ascent: snowshoes required, solid snow/ice conditions - Network accessline 160
- **2025-08-17** - [Ben C](https://www.peakbagger.com/climber/ascent.aspx?aid=2950323) - 📝 123 words, 📍 GPX - Network accessline 161
- **2025-08-25** - [Maureen Seeley](https://www.peakbagger.com/climber/ascent.aspx?aid=2969121) - 📝 119 words - Network accessline 169
- [PeakBagger Ascents](https://www.peakbagger.com/climber/PeakAscents.aspx?pid=1630) - Individual climb logs with optional GPX tracks and reports - Network accessline 170
- [Washington Trails Association](https://www.wta.org/go-hiking/hikes/mt-shuksan) - User-submitted trip reports with photos and conditions - Network accessline 171
- [Mountaineers.org](https://www.mountaineers.org/activities/routes-places/north-cascades-national-park-cross-country-zones/high-occupancy-xc-zones/mount-shuksan-sulphide-glacier) - Route information and trip reports - Network accessline 172
- [AllTrails](https://www.alltrails.com/trail/us/washington/mountt-shuksan-sulphide-glacier) - User reviews and recent activity - Network accessline 173
- [SummitPost](https://www.summitpost.org/mount-shuksan/150347) - Route-specific trip reports and photos - Network accessline 185
- PeakBagger: https://www.peakbagger.com/peak.aspx?pid=1630 - Network accessline 186
- WTA: https://www.wta.org/go-hiking/hikes/mt-shuksan - Network accessline 187
- SummitPost: https://www.summitpost.org/mount-shuksan/150347 - Network accessline 188
- AllTrails: https://www.alltrails.com/trail/us/washington/mountt-shuksan-sulphide-glacier - Network accessline 189
- Mountaineers.org: https://www.mountaineers.org/activities/routes-places/north-cascades-national-park-cross-country-zones/high-occupancy-xc-zones/mount-shuksan-sulphide-glacier - Network accessline 196
*Research completed 2026-01-29 using [route-researcher v1.0](https://github.com/dreamiurg/claude-mountaineering-skills/tree/main/skills/route-researcher) from the [Claude Mountaineering Skills](https://github.com/dreamiurg/claude-mountainee
skills/route-researcher/examples/2026-01-29-tinkham-peak.md
- Network accessline 25
Tinkham Peak rises to **5,398 ft (1,645 m)** with 677 ft (206 m) of prominence in the Cascade Range, King County, Washington. The peak is located at 47.349185, -121.454685 ([Google Maps](https://www.google.com/maps/search/?api=1&query=47.34 - Network accessline 29
**Sources:** [PeakBagger](https://www.peakbagger.com/peak.aspx?pid=2222), [WTA](https://www.wta.org/go-hiking/hikes/tinkham-peak), [AllTrails](https://www.alltrails.com/trail/us/washington/tinkham-peak-tinkham-east-boot-trail), [Mountaineer - Network accessline 37
**Directions:** [View on Google Maps](https://www.google.com/maps/search/?api=1&query=Mirror+Lake+Trailhead+Snoqualmie+Pass+WA) - Network accessline 129
- [Mountain-Forecast.com](https://www.mountain-forecast.com/peaks/Tinkham-Peak/forecasts/1645) - Summit-level forecast with multiple elevations - Network accessline 130
- [Open-Meteo Weather](https://open-meteo.com/en/docs#latitude=47.349185&longitude=-121.454685&elevation=1645&hourly=&daily=temperature_2m_max,temperature_2m_min,precipitation_sum&timezone=auto) - Detailed mountain weather data (source for - Network accessline 131
- [Open-Meteo Air Quality](https://open-meteo.com/en/docs/air-quality-api#latitude=47.349185&longitude=-121.454685&hourly=&daily=&timezone=auto) - Air quality forecast for this location - Network accessline 132
- [NOAA Point Forecast](https://forecast.weather.gov/MapClick.php?textField1=47.349185&textField2=-121.454685) - Official NWS forecast and alerts - Network accessline 133
- [NWAC Mountain Weather](https://nwac.us/mountain-weather-forecast/) - Cascades mountain weather (winter season) - Network accessline 139
**Avalanche forecast not available.** Check [NWAC.us](https://nwac.us) for current conditions before travel. - Network accessline 149
- **2024-09-15** - [Patty Cokus](https://www.peakbagger.com/climber/ascent.aspx?aid=2654835) - 461 words - Loop via Silver-Abiel-Tinkham, noted wet conditions, scrambly summit - Network accessline 150
- **2024-08-25** - [Jared Jones](https://www.peakbagger.com/climber/ascent.aspx?aid=2652913) - 413 words - Multi-peak loop with detailed route description - Network accessline 151
- **2024-08-09** - [Jamie Yelland](https://www.peakbagger.com/climber/ascent.aspx?aid=2601903) - 230 words - Silver/Abiel/Tinkham in that order - Network accessline 152
- **2024-08-31** - [Paul Kallmann](https://www.peakbagger.com/climber/ascent.aspx?aid=2630390) - 218 words - Mountaineers scramble, Windy Pass approach - Network accessline 153
- **2025-09-07** - [Francisco Madera](https://www.peakbagger.com/climber/ascent.aspx?aid=2976953) - 169 words, 📍 GPX - Recent detailed beta on difficulty - Network accessline 157
- **2025-11-16** - [Mirror and Cottonwood Lakes, Tinkham Peak, Twilight Lake](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-11-17.013746275873) - Clockwise loop, late season conditions - Network accessline 158
- **2025-09-26** - [Tinkham Peak](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-30.071521868992) - Detailed route description, road conditions - Network accessline 159
- **2025-09-20** - [Silver Peak, Tinkham Peak](https://www.wta.org/go-hiking/trip-reports/trip_report-2025-09-20.190840024989) - Multi-peak with photos - Network accessline 163
- [PeakBagger Ascents](https://www.peakbagger.com/climber/PeakAscents.aspx?pid=2222) - Individual climb logs with optional GPX tracks and reports - Network accessline 164
- [Washington Trails Association](https://www.wta.org/go-hiking/hikes/tinkham-peak) - User-submitted trip reports with photos and conditions (80 reports) - Network accessline 165
- [AllTrails](https://www.alltrails.com/trail/us/washington/tinkham-peak-tinkham-east-boot-trail) - User reviews and recent activity (514 reviews) - Network accessline 169
- **SummitPost access blocked:** WebFetch returned 403 and cloudscrape.py returned limited HTML content. Check [SummitPost](https://www.summitpost.org/tinkham-peak/151401) manually for additional route beta. - Network accessline 171
- **No PeakBagger route data:** The peak has no formal routes in PeakBagger database - route information synthesized from trip reports. - **Limited detailed PeakBagger reports:** Most PeakBagger reports are <100 words. WTA provides more com - Network accessline 173
- **Mountaineers.org trip report extraction not attempted:** Check [Mountaineers](https://www.mountaineers.org/activities/routes-places/mirror-lake-tinkham-peak) manually for additional route information. - Network accessline 177
- PeakBagger: https://www.peakbagger.com/peak.aspx?pid=2222 - Network accessline 178
- Washington Trails Association: https://www.wta.org/go-hiking/hikes/tinkham-peak - Network accessline 179
- AllTrails: https://www.alltrails.com/trail/us/washington/tinkham-peak-tinkham-east-boot-trail - Network accessline 180
- The Mountaineers: https://www.mountaineers.org/activities/routes-places/mirror-lake-tinkham-peak - Network accessline 181
- Open-Meteo Weather API: https://open-meteo.com/ - Network accessline 182
- Sunrise-Sunset.org API: https://sunrise-sunset.org/ - Network accessline 186
*Research completed 2026-01-29 using [route-researcher v3.5.0](https://github.com/dreamiurg/claude-mountaineering-skills/tree/main/skills/route-researcher) from the [Claude Mountaineering Skills](https://github.com/dreamiurg/claude-mountain
skills/route-researcher/tools/README.md
- Network accessline 25
# Default: fast httpx fetch (browser-like headers, no browser) - Network accessline 26
uv run python cloudscrape.py "https://www.peakbagger.com/peak.aspx?pid=1798" - Network accessline 28
# --render: Patchright headless browser for JS-rendered / Cloudflare-challenged pages uv run python cloudscrape.py --render "https://www.hikeoftheweek.com/some-hike" - Network accessline 29
uv run python cloudscrape.py --render "https://www.hikeoftheweek.com/some-hike" - Network accessline 67
# Standard fetch — fast, no browser uv run python cloudscrape.py "https://www.peakbagger.com/peak.aspx?pid=1798" | grep -i "elevation" - Network accessline 68
uv run python cloudscrape.py "https://www.peakbagger.com/peak.aspx?pid=1798" | grep -i "elevation" - Network accessline 70
# JS-rendered / Cloudflare page uv run python cloudscrape.py --render "https://www.hikeoftheweek.com/mount-baker" - Network accessline 71
uv run python cloudscrape.py --render "https://www.hikeoftheweek.com/mount-baker" - Network accessline 231
"error": "Connection timeout", "note": "Check service.com manually for current data", "url": "https://service.com/relevant-page" - Network accessline 232
"note": "Check service.com manually for current data", "url": "https://service.com/relevant-page" } - Network accessline 233
"url": "https://service.com/relevant-page"
skills/route-researcher/tools/cloudscrape.py
skills/route-researcher/tools/fetch_conditions.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 18
OPEN_METEO_WEATHER_URL = "https://api.open-meteo.com/v1/forecast" - Network accessline 19
OPEN_METEO_AQ_URL = "https://air-quality-api.open-meteo.com/v1/air-quality" - Network accessline 48
"patchright", "--from", "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0", - Network accessline 49
"--from", "git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0", "peakbagger", - Network accessline 50
"git+https://github.com/dreamiurg/peakbagger-cli.git@v1.10.0", - Network accessline 70
try: with httpx.Client(timeout=30.0) as client: - Network accessline 71
with httpx.Client(timeout=30.0) as client: - Network accessline 123
"forecast": forecast, "timezone": data.get("timezone"), "source_url": f"https://open-meteo.com/en/docs#latitude={lat}&longitude={lon}", - Network accessline 124
"timezone": data.get("timezone"), "source_url": f"https://open-meteo.com/en/docs#latitude={lat}&longitude={lon}", } - Network accessline 125
"source_url": f"https://open-meteo.com/en/docs#latitude={lat}&longitude={lon}", - Network accessline 141
try: with httpx.Client(timeout=30.0) as client: - Network accessline 142
with httpx.Client(timeout=30.0) as client: - Network accessline 174
"rating": rating, "concerns": concerns, "source_url": f"https://open-meteo.com/en/docs/air-quality-api#latitude={lat}&longitude={lon}", - Network accessline 175
"concerns": concerns, "source_url": f"https://open-meteo.com/en/docs/air-quality-api#latitude={lat}&longitude={lon}", } - Network accessline 176
"source_url": f"https://open-meteo.com/en/docs/air-quality-api#latitude={lat}&longitude={lon}", - Network accessline 289
return { "region": region, "url": f"https://nwac.us/avalanche-forecast/#{region}", - Network accessline 290
"region": region, "url": f"https://nwac.us/avalanche-forecast/#{region}", "note": "Check NWAC for current avalanche danger ratings before entering avalanche terrain", - Network accessline 291
"url": f"https://nwac.us/avalanche-forecast/#{region}", - Network accessline 321
FCC_AREA_URL = "https://geo.fcc.gov/api/census/area" - Network accessline 322
OVERPASS_URL = "https://overpass-api.de/api/interpreter" - Network accessline 323
USFS_DISTRICTS_URL = ( "https://apps.fs.usda.gov/arcx/rest/services/EDW/EDW_RangerDistricts_01/MapServer/0/query" ) - Network accessline 324
"https://apps.fs.usda.gov/arcx/rest/services/EDW/EDW_RangerDistricts_01/MapServer/0/query" - Network accessline 340
seen: dict[str, dict] = {} errors = 0 # consecutive failed requests (API likely down) with httpx.Client(timeout=30.0) as client: - Network accessline 341
errors = 0 # consecutive failed requests (API likely down) with httpx.Client(timeout=30.0) as client: for lat, lon in points: - Network accessline 342
with httpx.Client(timeout=30.0) as client: - Network accessline 371
return { "error": "FCC Area API returned no data for any sampled point.", "note": "County lookup failed; check https://geo.fcc.gov/api/census/area", - Network accessline 372
"error": "FCC Area API returned no data for any sampled point.", "note": "County lookup failed; check https://geo.fcc.gov/api/census/area", "counties": [], - Network accessline 373
"note": "County lookup failed; check https://geo.fcc.gov/api/census/area", - Network accessline 416
"User-Agent": ( "claude-mountaineering-skills/route-researcher " "(https://github.com/dreamiurg/claude-mountaineering-skills)" - Network accessline 417
"claude-mountaineering-skills/route-researcher " "(https://github.com/dreamiurg/claude-mountaineering-skills)" ), - Network accessline 418
"(https://github.com/dreamiurg/claude-mountaineering-skills)" - Network accessline 429
with httpx.Client(timeout=35.0, headers=_OVERPASS_HEADERS) as client: - Network accessline 517
try: with httpx.Client(timeout=20.0) as client: - Network accessline 518
with httpx.Client(timeout=20.0) as client:
skills/route-researcher/tools/test_cloudscrape.py
- Executable scriptline 1
Executable file - Network accessline 65
patch.object(cloudscrape, "_CHROMIUM_INSTALLED", True), ): result = runner.invoke(cli, ["https://example.com", "--render", "--timeout", "1"]) - Network accessline 67
result = runner.invoke(cli, ["https://example.com", "--render", "--timeout", "1"]) - Network accessline 91
patch.object(cloudscrape, "_CHROMIUM_INSTALLED", True), ): result = runner.invoke(cli, ["https://example.com", "--render", "--timeout", "1"]) - Network accessline 93
result = runner.invoke(cli, ["https://example.com", "--render", "--timeout", "1"]) - Network accessline 116
result = runner.invoke(cli, ["https://example.com"]) - Network accessline 132
result = runner.invoke(cli, ["https://example.com"]) - Network accessline 149
mock_client.__exit__ = MagicMock(return_value=False) mock_response = MagicMock() mock_response.raise_for_status.side_effect = httpx.HTTPStatusError( - Network accessline 150
mock_response = MagicMock() mock_response.raise_for_status.side_effect = httpx.HTTPStatusError( "403 Forbidden", - Network accessline 151
mock_response.raise_for_status.side_effect = httpx.HTTPStatusError( - Network accessline 159
result = runner.invoke(cli, ["https://example.com"]) - Network accessline 173
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.return_value = "<html>rendered</html>" result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 175
result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 185
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.return_value = "<html/>" runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 187
runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 189
mock_render.assert_called_once_with("https://example.com", 30, False) - Network accessline 195
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.return_value = "<html/>" runner.invoke(cli, ["https://example.com", "--render", "--timeout", "60"]) - Network accessline 197
runner.invoke(cli, ["https://example.com", "--render", "--timeout", "60"]) - Network accessline 199
mock_render.assert_called_once_with("https://example.com", 60, False) - Network accessline 205
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.return_value = "<html/>" runner.invoke(cli, ["https://example.com", "--render", "--headed"]) - Network accessline 207
runner.invoke(cli, ["https://example.com", "--render", "--headed"]) - Network accessline 209
mock_render.assert_called_once_with("https://example.com", 30, True) - Network accessline 213
runner = CliRunner() result = runner.invoke(cli, ["https://example.com", "--headed"]) - Network accessline 214
result = runner.invoke(cli, ["https://example.com", "--headed"]) - Network accessline 223
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.side_effect = Exception("Patchright not available") result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 225
result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 235
with patch("cloudscrape._fetch_with_render") as mock_render: mock_render.side_effect = ImportError("No module named 'patchright'") result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 237
result = runner.invoke(cli, ["https://example.com", "--render"]) - Network accessline 267
result = runner.invoke(cli, ["https://example.com", "--timeout", "60"])
skills/route-researcher/tools/test_fetch_conditions.py
- Executable scriptline 1
Executable file
skills/route-researcher/tools/test_fetch_conditions_unit.py
- Executable scriptline 1
Executable file
skills/route-researcher/tools/test_geodata_fetchers.py
- Executable scriptline 1
Executable file - Network accessline 162
"emergency": "yes", "phone": "+1-360-734-5400", "website": "https://www.peacehealth.org/st-joseph", - Network accessline 163
"phone": "+1-360-734-5400", "website": "https://www.peacehealth.org/st-joseph", "addr:housenumber": "2901", - Network accessline 164
"website": "https://www.peacehealth.org/st-joseph", - Network accessline 229
peace = next(h for h in result["hospitals"] if h["name"] == "PeaceHealth St. Joseph") assert peace["website"] == "https://www.peacehealth.org/st-joseph" - Network accessline 230
assert peace["website"] == "https://www.peacehealth.org/st-joseph"
skills/route-researcher/tools/test_phase4.py
- Executable scriptline 1
Executable file
skills/route-researcher/tools/test_phase5.py
- Executable scriptline 1
Executable file
skills/route-researcher/tools/uv.lock
- Network accessline 10
name = "anyio" version = "4.13.0" source = { registry = "https://pypi.org/simple" } - Network accessline 11
version = "4.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 12
source = { registry = "https://pypi.org/simple" } - Network accessline 15
{ name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b - Network accessline 16
] sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231 - Network accessline 17
sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 23162 - Network accessline 18
wheels = [ { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad7 - Network accessline 19
{ url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114 - Network accessline 23
name = "astral" version = "3.2" source = { registry = "https://pypi.org/simple" } - Network accessline 24
version = "3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 25
source = { registry = "https://pypi.org/simple" } - Network accessline 27
{ name = "tzdata", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/04/d1/1adbf06a38dc339e41a1666f6c7135924594c20fd46e060fb263248c564d/astral-3.2.tar.gz", hash = "sha256:9b7c3b412e9e69d172cfb2 - Network accessline 28
] sdist = { url = "https://files.pythonhosted.org/packages/04/d1/1adbf06a38dc339e41a1666f6c7135924594c20fd46e060fb263248c564d/astral-3.2.tar.gz", hash = "sha256:9b7c3b412e9e69d172cfb24be0e6addcc9f1bd01a28db8bebe66d75ccc533d88", size = 48075 - Network accessline 29
sdist = { url = "https://files.pythonhosted.org/packages/04/d1/1adbf06a38dc339e41a1666f6c7135924594c20fd46e060fb263248c564d/astral-3.2.tar.gz", hash = "sha256:9b7c3b412e9e69d172cfb24be0e6addcc9f1bd01a28db8bebe66d75ccc533d88", size = 48075, - Network accessline 30
wheels = [ { url = "https://files.pythonhosted.org/packages/2d/80/d6edd9c3259913cfe39aff2bea4da65de5ad0235a578405e37aabace5f2c/astral-3.2-py3-none-any.whl", hash = "sha256:cb7b49a3f0d4c64ae666be131276d2a3226134c598db10e672028cf8ff855f83 - Network accessline 31
{ url = "https://files.pythonhosted.org/packages/2d/80/d6edd9c3259913cfe39aff2bea4da65de5ad0235a578405e37aabace5f2c/astral-3.2-py3-none-any.whl", hash = "sha256:cb7b49a3f0d4c64ae666be131276d2a3226134c598db10e672028cf8ff855f83", size = 38325 - Network accessline 35
name = "certifi" version = "2026.4.22" source = { registry = "https://pypi.org/simple" } - Network accessline 36
version = "2026.4.22" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d - Network accessline 37
source = { registry = "https://pypi.org/simple" } - Network accessline 38
sdist = { url = "https://files.pythonhosted.org/packages/25/ee/6caf7a40c36a1220410afe15a1cc64993a1f864871f698c0f93acb72842a/certifi-2026.4.22.tar.gz", hash = "sha256:8d455352a37b71bf76a79caa83a3d6c25afee4a385d632127b6afb3963f1c580", size = - Network accessline 39
wheels = [ { url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a - Network accessline 40
{ url = "https://files.pythonhosted.org/packages/22/30/7cd8fdcdfbc5b869528b079bfb76dcdf6056b1a2097a662e5e8c04f42965/certifi-2026.4.22-py3-none-any.whl", hash = "sha256:3cb2210c8f88ba2318d29b0388d1023c8492ff72ecdde4ebdaddbb13a31b1c4a", size - Network accessline 44
name = "click" version = "8.3.3" source = { registry = "https://pypi.org/simple" } - Network accessline 45
version = "8.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 46
source = { registry = "https://pypi.org/simple" } - Network accessline 48
{ name = "colorama", marker = "sys_platform == 'win32'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cb - Network accessline 49
] sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 3280 - Network accessline 50
sdist = { url = "https://files.pythonhosted.org/packages/bb/63/f9e1ea081ce35720d8b92acde70daaedace594dc93b693c869e0d5910718/click-8.3.3.tar.gz", hash = "sha256:398329ad4837b2ff7cbe1dd166a4c0f8900c3ca3a218de04466f38f6497f18a2", size = 328061 - Network accessline 51
wheels = [ { url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b831430561 - Network accessline 52
{ url = "https://files.pythonhosted.org/packages/ae/44/c1221527f6a71a01ec6fbad7fa78f1d50dfa02217385cf0fa3eec7087d59/click-8.3.3-py3-none-any.whl", hash = "sha256:a2bf429bb3033c89fa4936ffb35d5cb471e3719e1f3c8a7c3fff0b8314305613", size = 1105 - Network accessline 56
name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } - Network accessline 57
version = "0.4.6" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb - Network accessline 58
source = { registry = "https://pypi.org/simple" } - Network accessline 59
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 276 - Network accessline 60
wheels = [ { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57a - Network accessline 61
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size - Network accessline 65
name = "greenlet" version = "3.5.0" source = { registry = "https://pypi.org/simple" } - Network accessline 66
version = "3.5.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3c/3f/dbf99fb14bfeb88c28f16729215478c0e265cacd6dc22270c8f31bb6892f/greenlet-3.5.0.tar.gz", hash = "sha256:d41964737 - Network accessline 67
source = { registry = "https://pypi.org/simple" } - Network accessline 68
sdist = { url = "https://files.pythonhosted.org/packages/3c/3f/dbf99fb14bfeb88c28f16729215478c0e265cacd6dc22270c8f31bb6892f/greenlet-3.5.0.tar.gz", hash = "sha256:d419647372241bc68e957bf38d5c1f98852155e4146bd1e4121adea81f4f01e4", size = 196 - Network accessline 69
wheels = [ { url = "https://files.pythonhosted.org/packages/8b/0f/a91f143f356523ff682309732b175765a9bc2836fd7c081c2c67fedc1ad4/greenlet-3.5.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8f1cc966c126639cd152fdaa52624d2655f492 - Network accessline 70
{ url = "https://files.pythonhosted.org/packages/8b/0f/a91f143f356523ff682309732b175765a9bc2836fd7c081c2c67fedc1ad4/greenlet-3.5.0-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:8f1cc966c126639cd152fdaa52624d2655f492faa79e013fea161 - Network accessline 71
{ url = "https://files.pythonhosted.org/packages/95/82/800646c7ffc5dbabd75ddd2f6b519bb898c0c9c969e5d0473bfe5d20bcce/greenlet-3.5.0-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:362624e6a8e5bca3b8233e45eef339 - Network accessline 72
{ url = "https://files.pythonhosted.org/packages/ca/ac/354867c0bba812fc33b15bc55aedafedd0aee3c7dd91dfca22444157dc0c/greenlet-3.5.0-cp311-cp311-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:5ecd83806b0f4c2f53b1018e0005cd - Network accessline 73
{ url = "https://files.pythonhosted.org/packages/c9/ab/192090c4a5b30df148c22bf4b8895457d739a7c7c5a7b9c41e5dd7f537f2/greenlet-3.5.0-cp311-cp311-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fa94cb2288681e3a11645958f1871d48ee - Network accessline 74
{ url = "https://files.pythonhosted.org/packages/ff/b0/815bece7399e01cadb69014219eebd0042339875c59a59b0820a46ece356/greenlet-3.5.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ff251e9a0279522e62f617641286939 - Network accessline 75
{ url = "https://files.pythonhosted.org/packages/24/11/05eb2b9b188c6df7d68a89c99134d644a7af616a40b9808e8e6ced315d5d/greenlet-3.5.0-cp311-cp311-manylinux_2_39_riscv64.whl", hash = "sha256:64d6ac45f7271f48e45f67c95b54ef73534c52ec041fcda8edf52 - Network accessline 76
{ url = "https://files.pythonhosted.org/packages/10/80/3b2c0a895d6698f6ddb31b07942ebfa982f3e30888bc5546a5b5990de8b2/greenlet-3.5.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6d874e79afd41a96e11ff4c5d0bc90a80973e476fda1c2c6498566 - Network accessline 77
{ url = "https://files.pythonhosted.org/packages/44/0e/f354af514a4c61454dbc68e44d47544a5a4d6317e30b77ddfa3a09f4c5f3/greenlet-3.5.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0ed006e4b86c59de7467eb2601cd1b77b5a7d657d1ee55e30fe30d7 - Network accessline 78
{ url = "https://files.pythonhosted.org/packages/fa/6a/87f38255201e993a1915265ebb80cd7c2c78b04a45744995abbf6b259fd8/greenlet-3.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:703cb211b820dbffbbc55a16bfc6e4583a6e6e990f33a119d2cc8b83211119c8", - Network accessline 79
{ url = "https://files.pythonhosted.org/packages/e3/f8/450fe3c5938fa737ea4d22699772e6e34e8e24431a47bf4e8a1ceed4a98e/greenlet-3.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:6c18dfb59c70f5a94acd271c72e90128c3c776e41e5f07767908c8c1b74ad339", - Network accessline 80
{ url = "https://files.pythonhosted.org/packages/ef/32/f2ce6d4cac3e55bc6173f92dbe627e782e1850f89d986c3606feb63aafa7/greenlet-3.5.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:db2910d3c809444e0a20147361f343fe2798e106af8d9d8506f53 - Network accessline 81
{ url = "https://files.pythonhosted.org/packages/b7/aa/caed9e5adf742315fc7be2a84196373aab4816e540e38ba0d76cb7584d68/greenlet-3.5.0-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ec9ea74e7268ace7f9aab1b1a4e73 - Network accessline 82
{ url = "https://files.pythonhosted.org/packages/c7/af/90ae08497400a941595d12774447f752d3dfe0fbb012e35b76bc5c0ff37e/greenlet-3.5.0-cp312-cp312-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54d243512da35485fc7a6bf3c178fd - Network accessline 83
{ url = "https://files.pythonhosted.org/packages/3f/e9/4eeadf8cb3403ac274245ba75f07844abc7fa5f6787583fc9156ba741e0f/greenlet-3.5.0-cp312-cp312-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:41353ec2ecedf7aa8f682753a41919f871 - Network accessline 84
{ url = "https://files.pythonhosted.org/packages/2b/e0/2e13df68f367e2f9960616927d60857dd7e56aaadd59a47c644216b2f920/greenlet-3.5.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9d280a7f5c331622c69f97eb167f3357 - Network accessline 85
{ url = "https://files.pythonhosted.org/packages/ee/ef/f913b3c0eb7d26d86a2401c5e1546c9d46b657efee724b06f6f4ac5d8824/greenlet-3.5.0-cp312-cp312-manylinux_2_39_riscv64.whl", hash = "sha256:58c1c374fe2b3d852f9b6b11a7dff4c85404e51b9a596fd9e89cf - Network accessline 86
{ url = "https://files.pythonhosted.org/packages/82/f7/393c64055132ac0d488ef6be549253b7e6274194863967ddc0bc8f5b87b8/greenlet-3.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1eb67d5adefb5bd2e182d42678a328979a209e4e82eb9357570818 - Network accessline 87
{ url = "https://files.pythonhosted.org/packages/b8/4b/eaf7735253522cf56d1b74d672a58f54fc114702ceaf05def59aae72f6e1/greenlet-3.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2628d6c86f6cb0cb45e0c3c54058bbec559f57eaae699447748cb39 - Network accessline 88
{ url = "https://files.pythonhosted.org/packages/4c/fe/4fb3a0805bd5165da5ebf858da7cc01cce8061674106d2cf5bdab32cbfde/greenlet-3.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:d4d9f0624c775f2dfc56ba54d515a8c771044346852a918b405914f6b19d7fd8", - Network accessline 89
{ url = "https://files.pythonhosted.org/packages/cb/cb/baa584cb00532126ffe12d9787db0a60c5a4f55c27bfe2666df5d4c30a32/greenlet-3.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:83ed9f27f1680b50e89f40f6df348a290ea234b249a4003d366663a12eab94f2", - Network accessline 90
{ url = "https://files.pythonhosted.org/packages/0c/58/fc576f99037ce19c5aa16628e4c3226b6d1419f72a62c79f5f40576e6eb3/greenlet-3.5.0-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:5a5ed18de6a0f6cc7087f1563f6bd93fc7df1c19165ca01e9bde5 - Network accessline 91
{ url = "https://files.pythonhosted.org/packages/4a/ba/b28ddbe6bfad6a8ac196ef0e8cff37bc65b79735995b9e410923fffeeb70/greenlet-3.5.0-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a717fbc46d8a354fa675f7c1e8134 - Network accessline 92
{ url = "https://files.pythonhosted.org/packages/09/06/4b69f8f0b67603a8be2790e55107a190b376f2627fe0eaf5695d85ffb3cd/greenlet-3.5.0-cp313-cp313-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ddc090c5c1792b10246a78e8c2163e - Network accessline 93
{ url = "https://files.pythonhosted.org/packages/6a/15/a643b4ecd09969e30b8a150d5919960caae0abe4f5af75ab040b1ab85e78/greenlet-3.5.0-cp313-cp313-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:4964101b8585c144cbda5532b1aa644255 - Network accessline 94
{ url = "https://files.pythonhosted.org/packages/8a/17/a3918541fd0ddefe024a69de6d16aa7b46d36ac19562adaa63c7fa180eff/greenlet-3.5.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2094acd54b272cb6eae8c03dd87b3fa1 - Network accessline 95
{ url = "https://files.pythonhosted.org/packages/77/18/3b13d5ef1275b0ffaf933b05efa21408ac4ca95823c7411d79682e4fdcff/greenlet-3.5.0-cp313-cp313-manylinux_2_39_riscv64.whl", hash = "sha256:7022615368890680e67b9965d33f5773aade330d5343bbe255601 - Network accessline 96
{ url = "https://files.pythonhosted.org/packages/ee/e1/bd0af6213c7dd33175d8a462d4c1fe1175124ebed4855bc1475a5b5242c2/greenlet-3.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5e05ba267789ea87b5a155cf0e810b1ab88bf18e9e8740813945ce - Network accessline 97
{ url = "https://files.pythonhosted.org/packages/9b/2a/0789702f864f5382cb476b93d7a9c823c10472658102ccd65f415747d2e2/greenlet-3.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0ecec963079cd58cbd14723582384f11f166fd58883c15dcbfb342e - Network accessline 98
{ url = "https://files.pythonhosted.org/packages/b2/8f/22bf9df92bbff0eb07842b60f7e63bf7675a9742df628437a9f02d09137f/greenlet-3.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:728d9667d8f2f586644b748dbd9bb67e50d6a9381767d1357714ea6825bb3bf5", - Network accessline 99
{ url = "https://files.pythonhosted.org/packages/b6/b7/9c5c3d653bd4ff614277c049ac676422e2c557db47b4fe43e6313fc005dc/greenlet-3.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:47422135b1d308c14b2c6e758beedb1acd33bb91679f5670edf77bf46244722b", - Network accessline 100
{ url = "https://files.pythonhosted.org/packages/94/5e/a70f31e3e8d961c4ce589c15b28e4225d63704e431a23932a3808cbcc867/greenlet-3.5.0-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:f35807464c4c58c55f0d31dfa83c541a5615d825c2fe3d2b95360 - Network accessline 101
{ url = "https://files.pythonhosted.org/packages/af/a6/046c0a28e21833e4086918218cfb3d8bed51c075a1b700f20b9d7861c0f4/greenlet-3.5.0-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55fa7ea52771be44af0de27d8b80c0 - Network accessline 102
{ url = "https://files.pythonhosted.org/packages/47/f8/4af27f71c5ff32a7fbc516adb46370d9c4ae2bc7bd3dc7d066ac542b4b15/greenlet-3.5.0-cp314-cp314-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a97e4821aa710603f94de0da25f250 - Network accessline 103
{ url = "https://files.pythonhosted.org/packages/fb/89/2dadb89793c37ee8b4c237857188293e9060dc085f19845c292e00f8e091/greenlet-3.5.0-cp314-cp314-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bf2d8a80bec89ab46221ae45c5373d5ba0 - Network accessline 104
{ url = "https://files.pythonhosted.org/packages/a3/59/1bd6d7428d6ed9106efbb8c52310c60fd04f6672490f452aeaa3829aa436/greenlet-3.5.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8f52a464e4ed91780bdfbbdd2b97197f - Network accessline 105
{ url = "https://files.pythonhosted.org/packages/82/35/75722be7e26a2af4cbd2dc35b0ed382dacf9394b7e75551f76ed1abe87f2/greenlet-3.5.0-cp314-cp314-manylinux_2_39_riscv64.whl", hash = "sha256:1bae92a1dd94c5f9d9493c3a212dd874c202442047cf96446412c - Network accessline 106
{ url = "https://files.pythonhosted.org/packages/83/e4/b903e5a5fae1e8a28cdd32a0cfbfd560b668c25b692f67768822ddc5f40f/greenlet-3.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:762612baf1161ccb8437c0161c668a688223cba28e1bf038f4eb47 - Network accessline 107
{ url = "https://files.pythonhosted.org/packages/0e/e3/5ec408a329acb854fb607a122e1ee5fb3ff649f9a97952948a90803c0d8e/greenlet-3.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:57a43c6079a89713522bc4bcb9f75070ecf5d3dbad7792bfe422393 - Network accessline 108
{ url = "https://files.pythonhosted.org/packages/91/20/6b165108058767ee643c55c5c4904d591a830ee2b3c7dbd359828fbc829f/greenlet-3.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:3bc59be3945ae9750b9e7d45067d01ae3fe90ea5f9ade99239dabdd6e28a5033", - Network accessline 109
{ url = "https://files.pythonhosted.org/packages/4e/62/1c498375cee177b55d980c1db319f26470e5309e54698c8f8fc06c0fd539/greenlet-3.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:a96fcee45e03fe30a62669fd16ab5c9d3c172660d3085605cb1e2d1280d3c988", - Network accessline 110
{ url = "https://files.pythonhosted.org/packages/78/a8/4522939255bb5409af4e87132f915446bf3622c2c292d14d3c38d128ae82/greenlet-3.5.0-cp314-cp314t-macosx_11_0_universal2.whl", hash = "sha256:a10a732421ab4fec934783ce3e54763470d0181db6e3468f9103 - Network accessline 111
{ url = "https://files.pythonhosted.org/packages/15/5e/8744c52e2c027b5a8772a01561934c8835f869733e101f62075c60430340/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7fc391b1566f2907d17aaebe78f88 - Network accessline 112
{ url = "https://files.pythonhosted.org/packages/00/ef/7b4c39c03cf46ceca512c5d3f914afd85aa30b2cc9a93015b0dd73e4be6c/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:680bd0e7ad5e8daa8a4aa89f68fd6 - Network accessline 113
{ url = "https://files.pythonhosted.org/packages/5f/5c/0602239503b124b70e39355cbdb39361ecfe65b87a5f2f63752c32f5286f/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_s390x.manylinux_2_28_s390x.whl", hash = "sha256:1aa4ce8debcd4ea7fb2e150f3036588c4 - Network accessline 114
{ url = "https://files.pythonhosted.org/packages/0b/b5/c7768f352f5c010f92064d0063f987e7dc0cd290a6d92a34109015ce4aa1/greenlet-3.5.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddb36c7d6c9c0a65f18c7258634e0c4 - Network accessline 115
{ url = "https://files.pythonhosted.org/packages/38/51/8699f865f125dc952384cb432b0f7138aa4d8f2969a7d12d0df5b94d054d/greenlet-3.5.0-cp314-cp314t-manylinux_2_39_riscv64.whl", hash = "sha256:728a73687e39ae9ca34e4694cbf2f049d3fbc7174639468d0f67 - Network accessline 116
{ url = "https://files.pythonhosted.org/packages/ef/d0/079ebe12e4b1fc758857ce5be1a5e73f06870f2101e52611d1e71925ce54/greenlet-3.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e5ddf316ced87539144621453c3aef229575825fe60c604e62bed - Network accessline 117
{ url = "https://files.pythonhosted.org/packages/6d/89/6c2fb63df3596552d20e58fb4d96669243388cf680cff222758812c7bfaa/greenlet-3.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:4a448128607be0de65342dc9b31be7f948ef4cc0bc8832069350ab - Network accessline 118
{ url = "https://files.pythonhosted.org/packages/15/32/77ee8a6c1564fc345a491a4e85b3bf360e4cf26eac98c4532d2fdb96e01f/greenlet-3.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d60097128cb0a1cab9ea541186ea13cd7b847b8449a7787c2e2350da0cb82d86" - Network accessline 122
name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } - Network accessline 123
version = "0.16.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45 - Network accessline 124
source = { registry = "https://pypi.org/simple" } - Network accessline 125
sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, - Network accessline 126
wheels = [ { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86 - Network accessline 127
{ url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 - Network accessline 131
name = "httpcore" version = "1.0.9" source = { registry = "https://pypi.org/simple" } - Network accessline 132
version = "1.0.9" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 133
source = { registry = "https://pypi.org/simple" } - Network accessline 136
{ name = "h11" }, ] sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff - Network accessline 137
] sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 8 - Network accessline 138
sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 854 - Network accessline 139
wheels = [ { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1 - Network accessline 140
{ url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 7 - Network accessline 144
name = "httpx" version = "0.28.1" source = { registry = "https://pypi.org/simple" } - Network accessline 145
version = "0.28.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 146
source = { registry = "https://pypi.org/simple" } - Network accessline 151
{ name = "idna" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e - Network accessline 152
] sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141 - Network accessline 153
sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 14140 - Network accessline 154
wheels = [ { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59 - Network accessline 155
{ url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 735 - Network accessline 159
name = "idna" version = "3.15" source = { registry = "https://pypi.org/simple" } - Network accessline 160
version = "3.15" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7 - Network accessline 161
source = { registry = "https://pypi.org/simple" } - Network accessline 162
sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, - Network accessline 163
wheels = [ { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8" - Network accessline 164
{ url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, - Network accessline 168
name = "iniconfig" version = "2.3.0" source = { registry = "https://pypi.org/simple" } - Network accessline 169
version = "2.3.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c7 - Network accessline 170
source = { registry = "https://pypi.org/simple" } - Network accessline 171
sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20 - Network accessline 172
wheels = [ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53 - Network accessline 173
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = - Network accessline 177
name = "packaging" version = "26.2" source = { registry = "https://pypi.org/simple" } - Network accessline 178
version = "26.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3 - Network accessline 179
source = { registry = "https://pypi.org/simple" } - Network accessline 180
sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228 - Network accessline 181
wheels = [ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0 - Network accessline 182
{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 1 - Network accessline 186
name = "patchright" version = "1.59.1" source = { registry = "https://pypi.org/simple" } - Network accessline 187
version = "1.59.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 188
source = { registry = "https://pypi.org/simple" } - Network accessline 192
] wheels = [ { url = "https://files.pythonhosted.org/packages/4d/1d/e6a4b7ff95c35617495a9b686cbf78a968f26ad51c91cef6b2a5eee88f3e/patchright-1.59.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:de2e0ea51a270e77ef6588bea1370510695cb94 - Network accessline 193
wheels = [ { url = "https://files.pythonhosted.org/packages/4d/1d/e6a4b7ff95c35617495a9b686cbf78a968f26ad51c91cef6b2a5eee88f3e/patchright-1.59.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:de2e0ea51a270e77ef6588bea1370510695cb94fe - Network accessline 194
{ url = "https://files.pythonhosted.org/packages/4d/1d/e6a4b7ff95c35617495a9b686cbf78a968f26ad51c91cef6b2a5eee88f3e/patchright-1.59.1-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:de2e0ea51a270e77ef6588bea1370510695cb94fe6ef848bc7e587d3 - Network accessline 195
{ url = "https://files.pythonhosted.org/packages/de/55/0b4bb56c141f2906e212c5b31f21ba6107a98105240c173b54d72c74f480/patchright-1.59.1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:e93fe960714c39152ea3300b7a2c3882cb8d1f992f6120db53406b5590 - Network accessline 196
{ url = "https://files.pythonhosted.org/packages/72/fc/98ad4f09613051b8c673701043ba6744a213175b01399e555b73de742006/patchright-1.59.1-py3-none-macosx_11_0_universal2.whl", hash = "sha256:bfaad3600817f271ccab34db9f33bb8148c649a157bad28b72709 - Network accessline 197
{ url = "https://files.pythonhosted.org/packages/3b/cc/f62063e59db98b154d9faf79603164d548f5117c95acc9d2a8104df9607a/patchright-1.59.1-py3-none-manylinux1_x86_64.whl", hash = "sha256:f0a7ee31e56391a96cd81f9ac1db130e8166c6083b7f3fb3bc9ba19d80 - Network accessline 198
{ url = "https://files.pythonhosted.org/packages/ac/74/2965635dd1d461243281e1774f78d865c2d1df24808cbe3b27a5ede64d7e/patchright-1.59.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69165d20308a045ddf1ad5124676252 - Network accessline 199
{ url = "https://files.pythonhosted.org/packages/e8/c2/959acc3fd3d867af4e567bb5e0cc63d4b1ca17fe4b7f673b3eef52fbf287/patchright-1.59.1-py3-none-win32.whl", hash = "sha256:56d9f2f3325f7205dfe6d22abc0969378225cd58b6ce29e7a7e3526c1d78c160", siz - Network accessline 200
{ url = "https://files.pythonhosted.org/packages/19/b1/1e7a4844ed6bc6bd3653c6e708f614a2b27ac54875ebd0e9c7badf7d25b6/patchright-1.59.1-py3-none-win_amd64.whl", hash = "sha256:3af6515b6103aedd1cdd09be7fa08ac028a954c6687d73fdee92570ae580fe4c", - Network accessline 201
{ url = "https://files.pythonhosted.org/packages/10/95/b148a41c6a099cd3d9f11a0641e4f10d50141cb8dca052f75f64dc631634/patchright-1.59.1-py3-none-win_arm64.whl", hash = "sha256:e259fae74b59a89ee020703ba142b8b5dd81a08f1c95ee3cda92829026057092", - Network accessline 205
name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } - Network accessline 206
version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b762 - Network accessline 207
source = { registry = "https://pypi.org/simple" } - Network accessline 208
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 - Network accessline 209
wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd47 - Network accessline 210
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 205 - Network accessline 214
name = "pyee" version = "13.0.1" source = { registry = "https://pypi.org/simple" } - Network accessline 215
version = "13.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 216
source = { registry = "https://pypi.org/simple" } - Network accessline 218
{ name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b98877 - Network accessline 219
] sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 3165 - Network accessline 220
sdist = { url = "https://files.pythonhosted.org/packages/8b/04/e7c1fe4dc78a6fdbfd6c337b1c3732ff543b8a397683ab38378447baa331/pyee-13.0.1.tar.gz", hash = "sha256:0b931f7c14535667ed4c7e0d531716368715e860b988770fc7eb8578d1f67fc8", size = 31655, - Network accessline 221
wheels = [ { url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b5768922 - Network accessline 222
{ url = "https://files.pythonhosted.org/packages/a0/c4/b4d4827c93ef43c01f599ef31453ccc1c132b353284fc6c87d535c233129/pyee-13.0.1-py3-none-any.whl", hash = "sha256:af2f8fede4171ef667dfded53f96e2ed0d6e6bd7ee3bb46437f77e3b57689228", size = 1565 - Network accessline 226
name = "pygments" version = "2.20.0" source = { registry = "https://pypi.org/simple" } - Network accessline 227
version = "2.20.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd0 - Network accessline 228
source = { registry = "https://pypi.org/simple" } - Network accessline 229
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 49 - Network accessline 230
wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946 - Network accessline 231
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = - Network accessline 235
name = "pytest" version = "9.0.3" source = { registry = "https://pypi.org/simple" } - Network accessline 236
version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - Network accessline 237
source = { registry = "https://pypi.org/simple" } - Network accessline 243
{ name = "pygments" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a4276 - Network accessline 244
] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 157 - Network accessline 245
sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 15721 - Network accessline 246
wheels = [ { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5 - Network accessline 247
{ url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375 - Network accessline 278
name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } - Network accessline 279
version = "4.15.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha25 - Network accessline 280
source = { registry = "https://pypi.org/simple" } - Network accessline 281
sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", - Network accessline 282
wheels = [ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883b - Network accessline 283
{ url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548" - Network accessline 287
name = "tzdata" version = "2026.2" source = { registry = "https://pypi.org/simple" } - Network accessline 288
version = "2026.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d - Network accessline 289
source = { registry = "https://pypi.org/simple" } - Network accessline 290
sdist = { url = "https://files.pythonhosted.org/packages/ba/19/1b9b0e29f30c6d35cb345486df41110984ea67ae69dddbc0e8a100999493/tzdata-2026.2.tar.gz", hash = "sha256:9173fde7d80d9018e02a662e168e5a2d04f87c41ea174b139fbef642eda62d10", size = 1982 - Network accessline 291
wheels = [ { url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc71 - Network accessline 292
{ url = "https://files.pythonhosted.org/packages/ce/e4/dccd7f47c4b64213ac01ef921a1337ee6e30e8c6466046018326977efd95/tzdata-2026.2-py2.py3-none-any.whl", hash = "sha256:bbe9af844f658da81a5f95019480da3a89415801f6cc966806612cc7169bffe7", size
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 2 facts
- Contacts geo.fcc.gov, which SKILL.md, the README and the plugin manifest do not mentionroute-researcher/tools/fetch_conditions.py:321High confidence
- Contacts overpass-api.de, which SKILL.md, the README and the plugin manifest do not mentionroute-researcher/tools/fetch_conditions.py:322High confidence
Signal confidence: 277 facts
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:32Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:33Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:34Low confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:56High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:103High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:192High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:199High confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:441Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:442Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:443Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:484Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:485Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:526Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:527Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:528Low confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:826High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:864High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:870High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:876High confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:882High confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:887Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:888Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:889Low confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:890Low confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:899High confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:902Low confidence
- Network access in code of the SKILL.mdroute-researcher/SKILL.md:907High confidence
- Network access in prose of the SKILL.mdroute-researcher/SKILL.md:910Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:64Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:65Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:66Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:73Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:92Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:94Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:98Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:233Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:234Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:328Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:330Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:334Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:349Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:350Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:405Low confidence
- Network access in prose of documentationroute-researcher/assets/report-template.md:449Low confidence
- Network access in prose of documentationroute-researcher/assets/trip-report-template.md:3Low confidence
- Network access in prose of documentationroute-researcher/examples/2025-10-23-mount-si.md:25Low confidence
- Network access in prose of documentationroute-researcher/examples/2025-10-23-mount-si.md:29Low confidence
- Network access in prose of documentationroute-researcher/examples/2025-10-23-mount-si.md:37Low confidence
- Network access in prose of documentationroute-researcher/examples/2025-10-23-mount-si.md:103Low confidence
- Network access in prose of documentationroute-researcher/examples/2025-10-23-mount-si.md:104Low confidence
and 227 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/route-researcher/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/route-researcher/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/route-researcher/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/route-researcher/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.