Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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, score
.claude/skills/machina-sports-sports-news/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 8% | 0% |
Before writing queries, consult references/api-reference.md for command parameters and references/rss-feeds.md for curated feed URLs.
Prefer the CLI — it avoids Python import path issues:
bashsports-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):
pythonfrom 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 calling any news command, verify:
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.Derive the current date from the system prompt's date (e.g., currentDate: 2026-02-16 means today is 2026-02-16).
after = today - 7 daysafter = today - 3 days| 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 |
fetch_items --google_news --query="<topic>" --limit=5 --sort_by_date=Truefetch_items --google_news --query="<topic>" --after=<7_days_ago> --sort_by_date=True --limit=10fetch_feed --url="<rss_url>".fetch_items --google_news --query="<sport> results" --after=<7_days_ago> --limit=5.Example 1: Transfer news search User says: "What's the latest Arsenal transfer news?" Actions:
after from currentDate: today minus 3 daysfetch_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:
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:
after from currentDate: today minus 7 daysfetch_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
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.
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
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,273 | 9,136 | -26% | 1 | 1 | 0% | 1,778 | 2,103 | +18% | 0 | 0 | — |
case-02 | fail→fail | 11,451 | 9,317 | -19% | 1 | 1 | 0% | 1,592 | 1,675 | +5% | 0 | 0 | — |
case-03 | fail→fail | 2,772 | 6,868 | +148% | 1 | 1 | 0% | 478 | 1,515 | +217% | 0 | 0 | — |
case-04 | fail→pass | 7,652 | 2,871 | -62% | 1 | 1 | 0% | 1,144 | 1,784 | +56% | 0 | 0 | — |
case-05 | fail→pass | 9,198 | 10,951 | +19% | 1 | 1 | 0% | 1,727 | 1,798 | +4% | 0 | 0 | — |
case-06 | fail→pass | 7,801 | 3,391 | -57% | 1 | 1 | 0% | 1,416 | 1,885 | +33% | 0 | 0 | — |
case-07 | fail→fail | 21,871 | 6,028 | -72% | 1 | 1 | 0% | 1,787 | 2,271 | +27% | 0 | 0 | — |
case-08 | fail→pass | 5,662 | 3,240 | -43% | 1 | 1 | 0% | 1,007 | 1,769 | +76% | 0 | 0 | — |
case-09 | fail→pass | 7,877 | 3,282 | -58% | 1 | 1 | 0% | 1,631 | 1,756 | +8% | 0 | 0 | — |
case-19 | fail→pass | 8,187 | 2,649 | -68% | 1 | 1 | 0% | 1,416 | 1,567 | +11% | 0 | 0 | — |
case-10 | fail→pass | 8,629 | 1,478 | -83% | 1 | 1 | 0% | 1,584 | 1,389 | -12% | 0 | 0 | — |
case-11 | fail→pass | 12,380 | 4,276 | -65% | 1 | 1 | 0% | 2,480 | 2,147 | -13% | 0 | 0 | — |
case-12 | fail→pass | 14,845 | 3,875 | -74% | 1 | 1 | 0% | 2,992 | 2,023 | -32% | 0 | 0 | — |
case-13 | fail→pass | 17,395 | 5,221 | -70% | 1 | 1 | 0% | 3,024 | 2,283 | -25% | 0 | 0 | — |
case-18 | fail→pass | 2,875 | 2,693 | -6% | 1 | 1 | 0% | 422 | 1,656 | +292% | 0 | 0 | — |
case-14 | fail→fail | 10,578 | 2,098 | -80% | 1 | 1 | 0% | 1,852 | 1,566 | -15% | 0 | 0 | — |
case-15 | fail→pass | 13,081 | 2,740 | -79% | 1 | 1 | 0% | 2,027 | 1,586 | -22% | 0 | 0 | — |
case-16 | fail→pass | 9,097 | 2,752 | -70% | 1 | 1 | 0% | 1,582 | 1,709 | +8% | 0 | 0 | — |
case-17 | fail→pass | 11,110 | 2,966 | -73% | 1 | 1 | 0% | 1,947 | 1,833 | -6% | 0 | 0 | — |
case-20 | pass→pass | 2,261 | 2,396 | +6% | 1 | 1 | 0% | 472 | 1,667 | +253% | 0 | 0 | — |
case-21 | pass→pass | 3,983 | 3,334 | -16% | 1 | 1 | 0% | 945 | 1,977 | +109% | 0 | 0 | — |
case-22 | pass→pass | 2,504 | 2,360 | -6% | 1 | 1 | 0% | 443 | 1,507 | +240% | 0 | 0 | — |
case-23 | pass→pass | 3,219 | 2,091 | -35% | 1 | 1 | 0% | 578 | 1,520 | +163% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +61 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.