All skills
github avatar

/geofeed-tuner

@4214189 official
by githubgithub/awesome-copilot40k stars
5,040

Use this skill whenever the user mentions IP geolocation feeds, RFC 8805, geofeeds, or wants help creating, tuning, validating, or publishing a self-published IP geolocation feed in CSV format. Intended user audience is a network operator, ISP, mobile carrier, cloud provider, hosting company, IXP, or satellite provider asking about IP geolocation accuracy, or geofeed authoring best practices. Helps create, refine, and improve CSV-format IP geolocation feeds with opinionated recommendations beyond RFC 8805 compliance. Do NOT use for private or internal IP address management — applies only to publicly routable IP addresses.

Use this Skill: https://skilld.dev/gh/github/awesome-copilot/geofeed-tuner

This session only. Nothing lands on disk.

referencessnippets-python3.md

≈869 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Code examples for Python 3

  • Use Python 3's built-in ipaddress package, with strict=True passed to constructors where available.
  • Be intentional about IPv4 vs IPv6 address parsing—they are not the same for professional network engineers. Use the strongest type/class available.
  • Remember that a subnet can contain a single host: use /128 for IPv6 and /32 for IPv4.

IP address and subnet parsing

  • Use the convenience factory functions in ipaddress.

    The following ipaddress.ip_address(textAddress) examples parse text into IPv4Address and IPv6Address objects, respectively:

    ipaddress.ip_address('192.168.0.1')
    ipaddress.ip_address('2001:db8::')

    The following ipaddress.ip_network(address, strict=True) example parses a subnet string and returns an IPv4Network or IPv6Network object, failing on invalid input:

    ipaddress.ip_network('192.168.0.0/28', strict=True)

    The following strict-mode call fails (correctly) with ValueError: 192.168.0.1/30 has host bits set. Ask the user to fix such errors; do not guess corrections:

    ipaddress.ip_network('192.168.0.1/30', strict=True)
  • Use the strict-form parser ipaddress.ip_network(address, strict=True).

Dictionary of IP subnets

Use a Python dictionary to track subnets and their associated geolocation properties. IPv4Network, IPv6Network, IPv4Address, and IPv6Address are all hashable and can be used as dictionary keys.

Detecting non-public IP ranges

The SKILL.md references is_private for detecting non-public ranges. Use the network's properties:

import ipaddress

def is_non_public(network):
    """Check if a network is non-public (private, loopback, link-local, multicast, or reserved).
    
    Note: In Python < 3.11, is_private may incorrectly flag some ranges
    (e.g., 100.64.0.0/10 CGNAT space). Use is_global as the primary check
    when available, with fallbacks for edge cases.
    """
    addr = network.network_address
    return (
        network.is_private
        or network.is_loopback
        or network.is_link_local
        or network.is_multicast
        or network.is_reserved
        or not network.is_global  # catches most non-routable space
    )

Caution with is_private on Python < 3.11: The 100.64.0.0/10 (Carrier-Grade NAT) range returns is_private=True but is_global=False in older Python versions. Since CGNAT space is not globally routable, flagging it as non-public is correct for RFC 8805 purposes.

ISO 3166-1 country code validation

Read the valid ISO 2-letter country codes from assets/iso3166-1.json, specifically the alpha_2 attribute:

import json

with open('assets/iso3166-1.json') as f:
    data = json.load(f)
    valid_countries = {c['alpha_2'] for c in data['3166-1']}

ISO 3166-2 region code validation

Read the valid region codes from assets/iso3166-2.json, specifically the code attribute. The top-level key is 3166-2 (matching the iso3166-1 pattern):

import json

with open('assets/iso3166-2.json') as f:
    data = json.load(f)
    valid_regions = {r['code'] for r in data['3166-2']}

Source: SKILL.md on GitHub

1 warning16d4 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    The skill is safe. It assists network operators in creating and tuning IP geolocation feeds. It performs local validation, uses a specialized API for data lookup, and generates a diagnostic HTML report.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: MEDIUM · 2 issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 4214189. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 20 hours ago.

Activeupdated 2 months ago
metadata
{
  "author": "Sid Mathur <support@getfastah.com>",
  "version": "0.0.9"
}
compatibility
Requires Python 3
  • Python
  • ip-geolocation
  • rfc-8805
  • geofeed
  • csv
  • network-operations
  • isp
  • routing

README badge

README badge for github/awesome-copilot/geofeed-tuner

Generates and validates RFC 8805 compliant IP geolocation feeds in CSV format, checking structure, data quality, and accuracy completeness. Targets network operators, ISPs, cloud providers, and hosting companies publishing location data for their publicly routable IP address space.

Generated from the current SKILL.md.

Does this skill work with IPv6 geolocation feeds?
Yes. The skill processes both IPv4 and IPv6 subnets in CIDR notation and tracks them separately in the analysis.
What is RFC 8805 and why does this skill care about it?
RFC 8805 is the industry standard for self-published IP geolocation feeds in CSV format. This skill validates your feed against RFC 8805 requirements and applies additional best practices beyond the standard.
Can I use this skill for private IP addresses like 192.168.x.x?
No. This skill applies only to publicly routable IP addresses. Private, loopback, link-local, and multicast address space are out of scope.
What input formats does this skill accept?
CSV files pasted as text, local CSV files, or remote URLs. If you provide a URL, the skill downloads the file to a working directory before processing.
Does this skill require Python?
Yes. Python 3 is required to execute the validation and tuning scripts.

Generated from the current SKILL.md. These answers refresh after source changes.