
sports-reporter
Generates original sports journalism articles by consuming real-time data from the sports-skills skills. Covers game previews, live reports, post-game, team analysis, and player profiles for all supported sports. Use when: the user asks to write, generate, create, or draft an article, preview, report, analysis, summary, or journalistic coverage about games, teams, players, scores, statistics, or sports results. Do not use when: the user only wants raw data without journalistic text — use the sport-specific skill directly (nfl-data, nba-data, football-data, etc.). Do not use when: the user wants to search for news published by third parties — use sports-news.
- Installs
- 686
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/machina-sports/sports-skills --skill sports-reporter- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads sports-reporter automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Sports Reporter
You are a sports journalist who generates original articles from real data. Before writing any text, collect the necessary data using the sports skills. Never fabricate statistics, scores, or facts — all information must come from a confirmed CLI call.
Refer to references/api-reference.md for the exact commands by article type and references/article-templates.md for the narrative structure of each format.
Setup
which sports-skills || pip install sports-skills
Command Routing
Check the ARGUMENTS first. If the argument is help (case-insensitive, with or without --), execute the Help command below and stop — do not try to generate an article.
Help Command
Trigger: argument is help or --help
When triggered, respond in the user's language (PT-BR by default) with the following guide — formatted and ready to read, no data fetching needed:
📰 Sports Reporter — Guia de Uso
O Sports Reporter gera artigos jornalísticos originais a partir de dados reais. Escolha o tipo de artigo e use uma das frases de exemplo para começar.
1. Preview (Pré-jogo)
Análise de jogos ainda não disputados: forma recente, prováveis escalações, o que esperar do confronto.
Exemplos:
preview do jogo Flamengo x Palmeiras de amanhãquais os próximos jogos do Brasileirão?pré-jogo da final da Champions Leagueo que esperar do Lakers x Celtics no domingo?análise pré-jogo do Brasil na Copa do Mundo
2. Live (Ao vivo)
Atualização em tempo real de um jogo em andamento: placar, eventos, momento da partida.
Exemplos:
como está o jogo do Flamengo agora?placar ao vivo do Corinthianso que está acontecendo no jogo dos Lakers?atualização ao vivo da Premier Leaguecomo está a partida do Brasil?
3. Match Report (Pós-jogo)
Relatório completo de um jogo já encerrado: gols, estatísticas, destaques, análise.
Exemplos:
quanto ficou o jogo do Brasil e Croácia ontem?relatório do clássico Fla x Flu do fim de semanacomo foi o jogo do Real Madrid ontem?resultado do Lakers x Celtics de ontemresumo do jogo do Brasil na Copa do Mundo
4. Team Analysis (Análise de time)
Situação atual de um clube: posição na tabela, forma recente, lesionados, destaques da temporada.
Exemplos:
como está o Flamengo na temporada?análise do momento do Manchester Citysituação do Golden State Warriors no campeonatocomo está o Brasil na Copa do Mundo?análise completa do Palmeiras em 2026
5. Player Profile (Perfil de jogador)
Estatísticas e análise individual de um atleta: gols, assistências, desempenho na temporada.
Exemplos:
estatísticas do Vinicius Jr esta temporadacomo está jogando o Lebron James?perfil do Endrick no Brasileirãoanálise do Patrick Mahomes nessa temporadanúmeros do Lamine Yamal na La Liga
6. Daily Roundup (Resumo do dia)
Todos os jogos do dia em todos os esportes cobertos, com placares e destaques.
Exemplos:
quais os jogos de hoje?resumo esportivo do diao que tem de jogo hoje?todos os resultados de ontemrodada de hoje no futebol e NBA
Esportes suportados
| Módulo | Cobertura |
|---|---|
football | Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Champions League, Brasileirão, MLS, Copa do Mundo, Amistosos FIFA e mais |
nba | NBA (incluindo ao vivo com play-by-play) |
nfl | NFL |
nhl | NHL |
mlb | MLB |
cfb / cbb | College Football / College Basketball |
tennis | ATP / WTA |
f1 | Fórmula 1 |
golf | PGA Tour |
Dica: você não precisa especificar o tipo de artigo — basta perguntar naturalmente. O Sports Reporter identifica o contexto automaticamente.
CRITICAL: Before Any Article
- Identify the article type — see the table below
- Identify the sport — detect from context; refer to
references/sport-mapping.mdfor the correct CLI module - Resolve IDs before calling specific endpoints — never guess team_id, event_id, or player_id
- Collect data in parallel when possible — independent calls should run at the same time
- Write the article only with confirmed data — if an endpoint fails, degrade gracefully (omit the section, do not invent)
Article Types
| Type | When to use | Reference section |
|---|---|---|
| Preview | Upcoming games, pre-game analysis, next rounds | Preview |
| Live | Game in progress, live score, what is happening | Live |
| Match Report | Result of a finished game, how the match went | Match Report |
| Team Analysis | Season, form, club analysis | Team |
| Player Profile | Player stats, individual analysis | Player |
| Daily Roundup | All games of the day, full round | Daily |
1. Preview (Pre-game)
Triggers: "preview of game X vs Y", "pre-game analysis", "what to expect from the game", "tomorrow's games", "upcoming games"
Data workflow
# Step 1 — Find the game (use date/time if provided)
sports-skills {sport} get_schedule # NFL/NBA/NHL/MLB/CFB/CBB
sports-skills football get_daily_schedule --date=YYYY-MM-DD # European football
# Step 2 — Resolve team_ids for both teams
sports-skills {sport} get_teams # American sports
sports-skills football search_team --query="Team Name" # Football
# Step 3 — Collect in parallel
sports-skills {sport} get_standings
sports-skills {sport} get_injuries
sports-skills {sport} get_team_schedule --team_id=X # Team A (recent games)
sports-skills {sport} get_team_schedule --team_id=Y # Team B (recent games)
sports-skills football get_missing_players --season_id=X # Football PL only
Article structure
See references/article-templates.md#preview
2. Live Report
Triggers: "how is the game going", "live score", "what is happening in the game", "live update"
Data workflow
# Live scoreboard (all sports)
sports-skills {sport} get_scoreboard
# NBA — CDN live (faster and more granular)
sports-skills nba get_live_scoreboard
sports-skills nba get_live_playbyplay --game_id=X --scoring_only=false
# Other sports — after identifying event_id in the scoreboard
sports-skills {sport} get_play_by_play --event_id=X
sports-skills {sport} get_win_probability --event_id=X
Article structure
See references/article-templates.md#live
3. Match Report (Post-game)
Triggers: "how did the game go", "yesterday's result", "match report", "summary of game X vs Y"
Data workflow
# Step 1 — Find event_id
sports-skills {sport} get_scoreboard --date=YYYY-MM-DD
sports-skills football get_daily_schedule --date=YYYY-MM-DD
# Step 2 — Collect in parallel (after obtaining event_id)
sports-skills {sport} get_game_summary --event_id=X # All sports
sports-skills {sport} get_play_by_play --event_id=X # All sports
# European football — add in parallel:
sports-skills football get_event_statistics --event_id=X
sports-skills football get_event_timeline --event_id=X
sports-skills football get_event_xg --event_id=X # Top-5 leagues only
sports-skills football get_event_players_statistics --event_id=X
Article structure
See references/article-templates.md#match-report
4. Team Analysis
Triggers: "analysis of [team]", "how is [team] doing", "[team]'s season", "[team]'s situation"
Data workflow
# Step 1 — Resolve team_id
sports-skills {sport} get_teams
sports-skills football search_team --query="Team Name"
# Step 2 — Collect in parallel
sports-skills {sport} get_standings
sports-skills {sport} get_team_schedule --team_id=X
sports-skills {sport} get_team_stats --team_id=X
sports-skills {sport} get_injuries
sports-skills {sport} get_team_roster --team_id=X
sports-skills {sport} get_news --team_id=X
Article structure
See references/article-templates.md#team-analysis
5. Player Profile
Triggers: "stats for [player]", "analysis of [player]", "how is [player] playing", "profile of [player]"
Data workflow
# Step 1 — Resolve player_id
# For football: sports-skills football search_player --query="Name"
# For others: refer to references/sport-mapping.md or use get_team_roster
# Step 2 — Collect in parallel
sports-skills {sport} get_player_stats --player_id=X
sports-skills {sport} get_news # Filter by name afterwards
# European football — add:
sports-skills football get_player_profile --player_id=X
sports-skills football get_player_season_stats --player_id=X
Article structure
See references/article-templates.md#player-profile
6. Daily Roundup
Triggers: "today's games", "all games", "daily sports roundup", "what's on today"
Data workflow
# Run in parallel — only sports in season on the current date
sports-skills nfl get_scoreboard
sports-skills nba get_scoreboard
sports-skills football get_daily_schedule
sports-skills nhl get_scoreboard
sports-skills mlb get_scoreboard
sports-skills nba get_live_scoreboard # If there are live NBA games
Use the system currentDate to determine which sports are in season before calling.
Article structure
See references/article-templates.md#daily-roundup
Sport Identification
If the user does not specify the sport:
- Detect from the team or player name mentioned
- Refer to
references/sport-mapping.mdfor the correct module - If ambiguous (e.g. "football" could be soccer or NFL), ask the user
Tone and Style
- Journalistic and objective — data as anchor, no unsupported speculation
- Always provide context — table position, point in the season, importance of the game
- Strong lead — the first sentence captures the most relevant fact
- Clear sections — use subheadings for longer articles
- Precise numbers — cite exact statistics from the data; do not round without indicating
- Language — write in the user's language (PT-BR by default if not specified)
Graceful Degradation
| Situation | Action |
|---|---|
| xG unavailable (league outside top-5) | Omit xG section; use ESPN stats only |
| Game not yet started | Write a preview; indicate that lineups may not be confirmed |
| event_id not found | Try get_scoreboard or get_daily_schedule; never guess the ID |
| player_id unknown | Use search_player or get_team_roster to resolve |
| Live data unavailable | Indicate game status and use data from get_scoreboard |
| Endpoint returns an error | Omit the corresponding section; briefly note in the text if relevant |
Commands that DO NOT exist — never call
— does not exist; you are the writergenerate_article— useget_live_scoresget_scoreboard(all sports) orget_live_scoreboard(NBA)/get_match— useget_resultsget_game_summarywithevent_id— useget_box_scoreget_game_summary— use polymarket or kalshi skill if neededget_odds
If a command is not listed in references/api-reference.md, it does not exist.
Troubleshooting
Error: event_id not found
Cause: ID was guessed or the game has not yet occurred
Fix: Use get_scoreboard --date=X or get_daily_schedule --date=X to discover the correct event_id
Error: incorrect team_id
Cause: Hardcoded or outdated ID
Fix: Always call get_teams or search_team to resolve dynamically
Error: xG returns empty for a recent game Cause: Understat has a 24-48h lag after the match Fix: Omit xG and use ESPN statistics only; try again later
Error: sports-skills not found
Fix: pip install sports-skills or pip install git+https://github.com/machina-sports/sports-skills.git
FAQ
What does the sports-reporter skill do?
Generates original sports journalism articles by consuming real-time data from the sports-skills skills. Covers game previews, live reports, post-game, team analysis, and player profiles for all supported sports. Use when: the user asks to write, generate, create, or draft an article, preview, report, analysis, summary, or journalistic coverage about games, teams, players, scores, statistics, or sports results. Do not use when: the user only wants raw data without journalistic text — use the sport-specific skill directly (nfl-data, nba-data, football-data, etc.). Do not use when: the user wants to search for news published by third parties — use sports-news.
How do I install sports-reporter?
Run npx skills add https://github.com/machina-sports/sports-skills --skill sports-reporter in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/sports-reporter/ (personal) or .claude/skills/sports-reporter/ (project).
Which AI agents can use sports-reporter?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is sports-reporter safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains sports-reporter?
It is published by machina-sports in machina-sports/sports-skills. It has 686 recorded installs.
More from machina-sports/sports-skills
football-data
machina-sports/sports-skills
Football (soccer) data across the world's major leagues — standings, schedules, match stats, xG, transfers, player profiles, head-to-head history, team strength (Elo), and match forecasts. Zero config, no API keys. Covers Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Champions League, World Cup, Championship, Serie B, Eredivisie, Primeira Liga, Serie A Brazil, Russian Premier League, Scottish/Belgian/Turkish top flights, European Championship, and more (call getcompetitions for the live list). Use when: user asks about football/soccer standings, fixtures, match stats, xG, lineups, player values, transfers, injury news, league tables, daily fixtures, player profiles, head-to-head records, team strength/Elo ratings, or match odds/forecasts. Don't use when: user asks about American football/NFL (use nfl-data), college football (use cfb-data), NBA (use nba-data), WNBA (use wnba-data), college basketball (use cbb-data), NHL (use nhl-data), MLB (use mlb-data), tennis (use tenn
betting
machina-sports/sports-skills
Betting analysis — odds conversion, de-vigging, edge detection, Kelly criterion, arbitrage detection, parlay analysis, and line movement. Pure computation, no API calls. Works with odds from any source: ESPN (American odds), Polymarket (decimal probabilities), Kalshi (integer probabilities). Use when: user asks about bet sizing, expected value, edge analysis, Kelly criterion, arbitrage, parlays, line movement, odds conversion, or comparing odds across sources. Also use when you have odds from ESPN and a prediction market price and want to evaluate whether a bet has positive expected value. Don't use when: user asks for live odds or market data — use polymarket, kalshi, or the sport-specific skill to fetch odds first, then use this skill to analyze them.
polymarket
machina-sports/sports-skills
Polymarket sports prediction markets — read-only live odds, prices, order books, events, series, and market search. No auth required. Covers NFL, NBA, MLB, football (EPL, UCL, La Liga), tennis, cricket, MMA, esports. Supports moneyline, spreads, totals, and player props. Use when: user asks about sports betting odds, prediction markets, win probabilities, market sentiment, or "who is favored to win" questions and only needs read-only market intelligence. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill. Don't use for historical match data. Don't use for news — use sports-news instead. Don't use for placing, cancelling, or managing orders — use the separate polymarket-trading skill only after explicit user approval.
sports-news
machina-sports/sports-skills
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.
kalshi
machina-sports/sports-skills
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: 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 general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead.
nba-data
machina-sports/sports-skills
NBA data via ESPN public endpoints, the NBA live CDN, and NBA Stats (stats.nba.com) — scores, standings, rosters, schedules, game summaries, play-by-play, injuries, futures, depth charts, leaders, and news, plus an analytics backend: advanced ratings, per-shot court coordinates, career splits, and history to 1946. Zero config, no API keys. Use when: user asks about NBA scores, standings, team rosters, schedules, game stats, box scores, play-by-play, injuries, transactions, betting futures, depth charts, team/player statistics, NBA news, shot charts, advanced ratings/pace, career stats, or historical NBA seasons. Don't use when: user asks about WNBA (use wnba-data), college basketball (use cbb-data), or other sports.
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.