sports-news — Claude Code skill: sports headlines from RSS and Google
Pulls fresh sports headlines from RSS feeds and Google News, searches by query and filters by date. Handy for transfer rumours or match reports.
npx skills add machina-sports/sports-skills --skill sports-news -a claude-codeWhat sports-news does
The skill hands your agent two commands. fetch_feed reads an RSS/Atom feed by URL, while fetch_items searches Google News by query or reads a specific feed. Date filters after and before are available, plus sort_by_date. Under the hood there is a sports-skills CLI and a Python SDK, sports_skills.news, doing the same work.
Dates come from the system prompt's currentDate, not from guesswork. "This week" means 7 days back, "recent" means 3 days back. Skip sort_by_date=True and old articles slip into the results, so treat that flag as required for any "latest" request.
Google News only works as a pair: google_news=True together with a query. Without the query the results come back empty. Commands named get_news, search_news and get_headlines do not exist, even though the names look plausible — an agent that calls them gets nothing. Standings, scores and statistics are out of scope here: this skill returns text articles, not structured data.
What it helps with
- pull fresh headlines about a club or player
- filter news down to the last three days
- read a curated BBC Sport or ESPN feed
- build a weekly roundup across several sports
- track transfer rumours before deadline day
Example prompts for the agent
- What's the latest Arsenal transfer news?
- Show me BBC Sport football headlines
- Any Champions League news from this week?
How to install sports-news
1Skills CLI (Vercel)
npx skills add machina-sports/sports-skills --skill sports-news -a claude-code2Manually: put the files in place
~/.claude/skills/sports-news/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/sports-news/
1Skills CLI (Vercel)
npx skills add machina-sports/sports-skills --skill sports-news -a codex2Manually: put the files in place
.agents/skills/sports-news/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add machina-sports/sports-skills --skill sports-news -a cursor2Manually: put the files in place
.cursor/skills/sports-news/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install machina-sports/sports-skills sports-news2Manually: put the files in place
.github/skills/sports-news/SKILL.md1Skills CLI (Vercel)
npx skills add machina-sports/sports-skills --skill sports-news -a gemini-cli2Platform CLI
gemini skills install https://github.com/machina-sports/sports-skills --path skills/sports-newsManually: put the files in place
.devin/skills/sports-news/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add machina-sports/sports-skills --skill sports-news -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about sports-news
How do I install sports-news in Claude?
Run npx skills add machina-sports/sports-skills --skill sports-news -a claude-code. The skill lands at ~/.claude/skills/sports-news/SKILL.md.
What does sports-news do?
It fetches sports news from RSS/Atom feeds and Google News: headlines, query search, date filtering. You get text articles with sources and dates.
How is sports-news different from football-data or nba-data?
Those skills return structured data such as standings, scores and statistics. sports-news returns text articles only, so reach for it when you need coverage rather than numbers.
Source text
SKILL.md · MIT
--- name: sports-news description: | Sports news via RSS/Atom feeds and Google News. Fetch headlines, search by query, filter by date. Covers football news, transfer rumors, match reports, and any sport via Google News. Use when: user asks for recent news, headlines, transfer rumors, or articles about any sport. Good for "what's the latest on [team/player]" questions. Supports any Google News query and curated RSS feeds (BBC Sport, ESPN, The Athletic, Sky Sports). Don't use when: user asks for structured data like standings, scores, statistics, or xG — use the sport-specific skill instead: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for prediction market odds — use polymarket or kalshi. News results are text articles, not structured data. license: MIT metadata: author: machina-sports version: "0.1.0" --- # Sports News Before writing queries, consult `references/api-reference.md` for command parameters and `references/rss-feeds.md` for curated feed URLs. ## Quick Start Prefer the CLI — it avoids Python import path issues: ```bash sports-skills news fetch_items --google_news --query="Arsenal transfer" --limit=5 sports-skills news fetch_feed --url="https://feeds.bbci.co.uk/sport/football/rss.xml" ``` Python SDK (alternative): ```python from sports_skills import news articles = news.fetch_items(google_news=True, query="Arsenal transfer news", limit=10) feed = news.fetch_feed(url="https://feeds.bbci.co.uk/sport/football/rss.xml") ``` ## CRITICAL: Before Any Query CRITICAL: Before calling any news command, verify: - Dates are derived from the system prompt's `currentDate` — never hardcoded. - `google_news=True` is always paired with a `query` parameter. - `sort_by_date=True` is set for any "recent" or "latest" query. ## Choosing Dates Derive the current date from the system prompt's date (e.g., `currentDate: 2026-02-16` means today is 2026-02-16). - **"this week"**: `after = today - 7 days` - **"recent" or "latest"**: `after = today - 3 days` - **Specific date range**: use as-is ## Commands | Command | Required | Optional | Description | |---|---|---|---| | `fetch_feed` | url | | Fetch an RSS/Atom feed by URL | | `fetch_items` | | google_news, query, url, limit, after, before, sort_by_date | Fetch news from Google News or an RSS feed | ## Workflows ### Breaking News Check 1. `fetch_items --google_news --query="<topic>" --limit=5 --sort_by_date=True` 2. Present headlines with source and date. ### Topic Deep-Dive 1. `fetch_items --google_news --query="<topic>" --after=<7_days_ago> --sort_by_date=True --limit=10` 2. For curated sources, also try `fetch_feed --url="<rss_url>"`. 3. Cross-reference both for comprehensive coverage. ### Weekly Sports Roundup 1. For each sport of interest, `fetch_items --google_news --query="<sport> results" --after=<7_days_ago> --limit=5`. 2. Aggregate and present by sport. ## Examples Example 1: Transfer news search User says: "What's the latest Arsenal transfer news?" Actions: 1. Derive `after` from `currentDate`: today minus 3 days 2. Call `fetch_items(google_news=True, query="Arsenal transfer news", after=<derived_date>, sort_by_date=True, limit=10)` Result: Recent Arsenal transfer headlines with source, date, and links Example 2: Curated RSS feed User says: "Show me BBC Sport football headlines" Actions: 1. Call `fetch_feed(url="https://feeds.bbci.co.uk/sport/football/rss.xml")` Result: BBC Sport football feed title, last updated, and recent articles Example 3: Date-filtered news User says: "Any Champions League news from this week?" Actions: 1. Derive `after` from `currentDate`: today minus 7 days 2. Call `fetch_items(google_news=True, query="Champions League", after=<derived_date>, sort_by_date=True, limit=10)` Result: Champions League articles from the last 7 days, sorted newest first ## Commands that DO NOT exist — never call these - ~~`get_news`~~ — does not exist. Use `fetch_feed` (for RSS) or `fetch_items` (for Google News search). - ~~`search_news`~~ — does not exist. Use `fetch_items` with `google_news=True` and a `query` parameter. - ~~`get_headlines`~~ — does not exist. Use `fetch_items` with `google_news=True`. If a command is not listed in the Commands table above, it does not exist. ## Troubleshooting Error: Google News returns empty results Cause: `query` is missing or too narrow, or `google_news=True` is not set Solution: Ensure `google_news=True` AND a `query` are both set. Try broader keywords (e.g., "Arsenal" instead of "Arsenal vs Chelsea goal") Error: RSS feed returns an error Cause: The feed URL may be temporarily down or the URL format has changed Solution: Use Google News (`fetch_items` with `google_news=True`) as a fallback for the same topic Error: Articles returned are old despite using "recent" query Cause: `sort_by_date=True` is not set, or the `after` date filter is missing Solution: Add `sort_by_date=True` and `after=<today - 3 days>` to ensure newest articles appear first
© machina-sports · MIT · machina-sports/sports-skills