$npx -y skills add machina-sports/sports-skills --skill sports-newsSports 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. Goo
| 1 | # Sports News |
| 2 | |
| 3 | Before writing queries, consult `references/api-reference.md` for command parameters and `references/rss-feeds.md` for curated feed URLs. |
| 4 | |
| 5 | ## Quick Start |
| 6 | |
| 7 | Prefer the CLI — it avoids Python import path issues: |
| 8 | ```bash |
| 9 | sports-skills news fetch_items --google_news --query="Arsenal transfer" --limit=5 |
| 10 | sports-skills news fetch_feed --url="https://feeds.bbci.co.uk/sport/football/rss.xml" |
| 11 | ``` |
| 12 | |
| 13 | Python SDK (alternative): |
| 14 | ```python |
| 15 | from sports_skills import news |
| 16 | |
| 17 | articles = news.fetch_items(google_news=True, query="Arsenal transfer news", limit=10) |
| 18 | feed = news.fetch_feed(url="https://feeds.bbci.co.uk/sport/football/rss.xml") |
| 19 | ``` |
| 20 | |
| 21 | ## CRITICAL: Before Any Query |
| 22 | |
| 23 | CRITICAL: Before calling any news command, verify: |
| 24 | - Dates are derived from the system prompt's `currentDate` — never hardcoded. |
| 25 | - `google_news=True` is always paired with a `query` parameter. |
| 26 | - `sort_by_date=True` is set for any "recent" or "latest" query. |
| 27 | |
| 28 | ## Choosing Dates |
| 29 | |
| 30 | Derive the current date from the system prompt's date (e.g., `currentDate: 2026-02-16` means today is 2026-02-16). |
| 31 | |
| 32 | - **"this week"**: `after = today - 7 days` |
| 33 | - **"recent" or "latest"**: `after = today - 3 days` |
| 34 | - **Specific date range**: use as-is |
| 35 | |
| 36 | ## Commands |
| 37 | |
| 38 | | Command | Required | Optional | Description | |
| 39 | |---|---|---|---| |
| 40 | | `fetch_feed` | url | | Fetch an RSS/Atom feed by URL | |
| 41 | | `fetch_items` | | google_news, query, url, limit, after, before, sort_by_date | Fetch news from Google News or an RSS feed | |
| 42 | |
| 43 | ## Workflows |
| 44 | |
| 45 | ### Breaking News Check |
| 46 | 1. `fetch_items --google_news --query="<topic>" --limit=5 --sort_by_date=True` |
| 47 | 2. Present headlines with source and date. |
| 48 | |
| 49 | ### Topic Deep-Dive |
| 50 | 1. `fetch_items --google_news --query="<topic>" --after=<7_days_ago> --sort_by_date=True --limit=10` |
| 51 | 2. For curated sources, also try `fetch_feed --url="<rss_url>"`. |
| 52 | 3. Cross-reference both for comprehensive coverage. |
| 53 | |
| 54 | ### Weekly Sports Roundup |
| 55 | 1. For each sport of interest, `fetch_items --google_news --query="<sport> results" --after=<7_days_ago> --limit=5`. |
| 56 | 2. Aggregate and present by sport. |
| 57 | |
| 58 | ## Examples |
| 59 | |
| 60 | Example 1: Transfer news search |
| 61 | User says: "What's the latest Arsenal transfer news?" |
| 62 | Actions: |
| 63 | 1. Derive `after` from `currentDate`: today minus 3 days |
| 64 | 2. Call `fetch_items(google_news=True, query="Arsenal transfer news", after=<derived_date>, sort_by_date=True, limit=10)` |
| 65 | Result: Recent Arsenal transfer headlines with source, date, and links |
| 66 | |
| 67 | Example 2: Curated RSS feed |
| 68 | User says: "Show me BBC Sport football headlines" |
| 69 | Actions: |
| 70 | 1. Call `fetch_feed(url="https://feeds.bbci.co.uk/sport/football/rss.xml")` |
| 71 | Result: BBC Sport football feed title, last updated, and recent articles |
| 72 | |
| 73 | Example 3: Date-filtered news |
| 74 | User says: "Any Champions League news from this week?" |
| 75 | Actions: |
| 76 | 1. Derive `after` from `currentDate`: today minus 7 days |
| 77 | 2. Call `fetch_items(google_news=True, query="Champions League", after=<derived_date>, sort_by_date=True, limit=10)` |
| 78 | Result: Champions League articles from the last 7 days, sorted newest first |
| 79 | |
| 80 | ## Commands that DO NOT exist — never call these |
| 81 | |
| 82 | - ~~`get_news`~~ — does not exist. Use `fetch_feed` (for RSS) or `fetch_items` (for Google News search). |
| 83 | - ~~`search_news`~~ — does not exist. Use `fetch_items` with `google_news=True` and a `query` parameter. |
| 84 | - ~~`get_headlines`~~ — does not exist. Use `fetch_items` with `google_news=True`. |
| 85 | |
| 86 | If a command is not listed in the Commands table above, it does not exist. |
| 87 | |
| 88 | ## Troubleshooting |
| 89 | |
| 90 | Error: Google News returns empty results |
| 91 | Cause: `query` is missing or too narrow, or `google_news=True` is not set |
| 92 | Solution: Ensure `google_news=True` AND a `query` are both set. Try broader keywords (e.g., "Arsenal" instead of "Arsenal vs Chelsea goal") |
| 93 | |
| 94 | Error: RSS feed returns an error |
| 95 | Cause: The feed URL may be temporarily down or the URL format has changed |
| 96 | Solution: Use Google News (`fetch_items` with `google_news=True`) as a fallback for the same topic |
| 97 | |
| 98 | Error: Articles returned are old despite using "recent" query |
| 99 | Cause: ` |