Curate Sources

SkillFiles & storage

Curate proxywhirl proxy sources, prune broken/stale/duplicate sources and discover new high-quality ones via web research. Syncs all downstream files: sources.py, tests, docs, and reference inventories. Use when asked to update, clean up, audit, curate, or refresh proxy sources.

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

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the Curate Sources skill

What this skill tells your AI

The instructions your AI receives, as published by wyattowalsh/proxywhirl in .claude/skills/curate-sources/SKILL.md and read by ahel’s review.

Maintain the proxy source list in proxywhirl/sources.py and keep all downstream files in sync: tests, docs, reference inventories, and exports.

Quick Start

Invoke the source-curator agent:

/agent source-curator

Or run the validation script directly:

uv run python scripts/curate_sources.py validate          # Full validation report (JSON)
uv run python scripts/curate_sources.py check-candidate URL  # Check a candidate source

Workflow

  1. Validate — Run scripts/curate_sources.py validate to get health status of all sources
  2. Prune — Remove or disable sources that are broken, stale, or duplicates
  3. Discover — Search GitHub and the web for new proxy list repos/APIs
  4. Integrate — Add new sources and remove pruned ones in sources.py
  5. Sync downstream — Update reference inventory, tests, and docs
  6. Verify — Run lint + all source-related tests to ensure nothing is broken

Files That Must Stay in Sync

See the full file inventory in .claude/agents/source-curator.md.

Key files: proxywhirl/sources.py (primary), references/known-sources.md (inventory), tests/unit/test_sources.py, tests/contract/test_proxy_sources.py, tests/unit/test_sources_audit.py, README.md (feature card count), and all code that imports sources (cli.py, exports.py, __init__.py).

References

  • Source Schema — ProxySourceConfig model, naming conventions, collection rules
  • Known Sources — Current source inventory for deduplication

Pruning Criteria

ConditionAction
HTTP 404/410 for 7+ daysRemove entirely
GitHub repo archivedRemove entirely
GitHub repo not pushed in 90+ daysDisable (enabled=False)
GitHub repo <10 starsFlag for review
Empty response / no proxy dataDisable if persistent
Duplicate of existing sourceRemove the lower-quality one
In RECOMMENDED_SOURCESNEVER prune without user approval
In API_SOURCESNEVER prune (high-value)

Adding New Sources

New sources must meet ALL criteria:

  • Returns valid proxy data (IP:PORT format)
  • Updated within the last 30 days
  • For GitHub repos: >50 stars preferred, active maintenance
  • Not a duplicate of an existing source (check known-sources.md)
  • Plain text format preferred (simplest parsing)

Variable Naming Convention

Source TypePatternExample
GitHub repoGITHUB_{OWNER}_{PROTOCOL}GITHUB_MONOSANS_HTTP
API service{SERVICE}_{PROTOCOL}PROXY_SCRAPE_SOCKS5
Web-hosted{DOMAIN}_{PROTOCOL}PROXYSPACE_HTTP

Collection Membership

CollectionCriteria
ALL_HTTP_SOURCESAny source providing HTTP/HTTPS proxies
ALL_SOCKS4_SOURCESAny source providing SOCKS4 proxies
ALL_SOCKS5_SOURCESAny source providing SOCKS5 proxies
ALL_SOURCESAuto-computed: HTTP + SOCKS4 + SOCKS5
RECOMMENDED_SOURCESOnly the most reliable, fast, pre-validated sources (user approval required)
API_SOURCESOnly API-based sources (GeoNode, etc.)

Code Style for New Definitions

# owner/repo-name - Description (stars, update frequency)
GITHUB_OWNER_PROTOCOL = ProxySourceConfig(
    url="https://raw.githubusercontent.com/owner/repo/branch/file.txt",
    format="plain_text",
    protocol="socks5",  # omit for HTTP (default)
    trusted=True,  # only if source pre-validates proxies
)

Consistency Checklist

See the full checklist in .claude/agents/source-curator.md.

Quick verification:

uv run python -c "from proxywhirl.sources import ALL_SOURCES; print(f'{len(ALL_SOURCES)} sources loaded')"
uv run pytest tests/unit/test_sources.py tests/unit/test_sources_audit.py tests/contract/test_proxy_sources.py -v

Signals

GitHub stars
25
Forks
6
Last commit
Sep 2026
Advanced
Item type
skill
Key
curate-sources
Source
github.com/wyattowalsh/proxywhirl