geographic-source-discovery
Skill2 starsChanged 7 months agoMITView on GitHub
Discover trusted sources for news coverage by mapping the civic and community landscape of given zip codes. Takes a comma-separated list of zip codes.
In this repository11 other files it gives its agents.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 5
If no zip codes are provided in $ARGUMENTS, tell the user they need to provide at least one zip code (e.g.
- Distinctive: line 26
Map community organizations: Search for:
- Distinctive: line 32
Map informal community channels: Search for:
- Very specific: line 37
Write your findings to skills/geographic-source-discovery/skill-output/geographic-source-discovery/<timestamp>/terrain-map.md in the …
- Distinctive: line 46
Look for structured data feeds in this priority order:
- Distinctive: line 51
If none of the above exist, check for:
- Distinctive: line 69
Do not create duplicate sources.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
If no zip codes are provided in $ARGUMENTS, tell the user they need to provide at least one zip code (e.g. /journalism-skills:geographic-source-discovery 10001, 10002) and stop.
You are a beat reporter building a source list for a new coverage area. Your job is to find every civic body, government portal, community organization, and informal community channel that publishes information relevant to the provided zip codes.
Phase 1: Map the terrain
For each zip code, research the geographic and civic landscape:
- Identify the area: What neighborhood(s), city, county, and state does this zip code cover?
- Map civic bodies: What government entities have jurisdiction here? Search the web for:
- City/town council or equivalent legislative body
- Community boards or advisory councils
- Local police precinct or sheriff's office
- School district and school board
- Zoning/planning board
- Parks department (local)
- Health department (local)
- Housing authority
- Any special districts (BIDs, land trusts, water districts, etc.)
- Map community organizations: Search for:
- Neighborhood associations and civic groups
- Tenant unions and housing advocacy orgs
- Mutual aid networks
- Religious institutions that serve as community hubs
- Local business associations and chambers of commerce
- Map informal community channels: Search for:
- Facebook groups for the neighborhood (search Facebook for "[neighborhood name] community", "[neighborhood name] residents", etc.)
- Reddit communities (subreddits for the neighborhood, borough, or city)
- Community newsletters or blogs
Write your findings to skills/geographic-source-discovery/skill-output/geographic-source-discovery/<timestamp>/terrain-map.md
in the journalism-skills directory before proceeding to Phase 2. This makes Phase 1 auditable.
Phase 2: Find sources and access methods
For each entity discovered in Phase 1, find its digital presence and the best way to access its information programmatically. For each one:
- Find the entity's official website.
- Look for structured data feeds in this priority order:
- Public API (REST, GraphQL, SODA/Socrata, etc.)
- RSS or Atom feed
- iCal/ICS calendar feed (especially for meeting schedules)
- Scrapable web page with regularly updated content
- If none of the above exist, check for:
- Email newsletter signup (note the signup URL)
- Public Facebook page or group URL
- Any other regularly updated public page
- For Reddit communities, note the subreddit name — PRAW can access these.
- For Facebook groups, note the group URL and whether it's public or private.
For each of the best sources, call the add_source_from_source_discovery MCP tool with:
name: descriptive name of the source (e.g. "Brooklyn Community Board 6 Meeting Calendar")aiAccessInstructions: how to access the source programmatically — API endpoint, RSS URL, scraping instructions, or if manual-only, describe what a human would need to do to monitor itwhenItsImportant: when this source produces newsworthy information (e.g. "when new zoning variances are filed", "when meeting agendas are posted before monthly meetings")sourceClientKey: object withapi_keyif needed and any other access metadataisReferenceSource: true if this is a large database useful for answering questions but unlikely to generate story leads on its own (e.g. tax records, Census data)
Do not create duplicate sources. If a source already exists in the system (check by searching for similar names in existing story lead sources), skip it.
What makes a good source
Prioritize sources that:
- Publish new information on a regular schedule (meeting minutes, permit filings, crime stats)
- Cover topics that directly affect residents (housing, safety, schools, transit, development)
- Are primary sources rather than aggregators (the community board itself, not a blog that summarizes their meetings)
- Have programmatic access, but don't skip valuable sources just because they require manual monitoring
After creating all sources
Summarize what was created:
- How many sources were created, grouped by type (civic/government, community org, informal channel)
- Which zip codes have the best coverage and which have gaps
- Any notable sources that could only be saved with manual access instructions
Zip codes to search: $ARGUMENTS
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

