From machina-sports-sports-skills
Fetches Dutch volleyball data (Eredivisie, Topdivisie, Superdivisie, full pyramid) from Nevobo API: standings, schedules, results, clubs, tournaments, news. Zero config, no API keys.
npx claudepluginhub joshuarweaver/cascade-data-analytics --plugin machina-sports-sports-skillsThis skill uses the workspace's default tool permissions.
Before writing queries, consult `references/api-reference.md` for endpoints, ID conventions, and data shapes.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Dynamically discovers and combines enabled skills into cohesive, unexpected delightful experiences like interactive HTML or themed artifacts. Activates on 'surprise me', inspiration, or boredom cues.
Generates images from structured JSON prompts via Python script execution. Supports reference images and aspect ratios for characters, scenes, products, visuals.
Before writing queries, consult references/api-reference.md for endpoints, ID conventions, and data shapes.
Before first use, check if the CLI is available:
which sports-skills || pip install sports-skills
If pip install fails (package not found or Python version error), install from GitHub:
pip install git+https://github.com/machina-sports/sports-skills.git
The package requires Python 3.10+. If your default Python is older, use a specific version:
python3 --version # check version
# If < 3.10, try: python3.12 -m pip install sports-skills
# On macOS with Homebrew: /opt/homebrew/bin/python3.12 -m pip install sports-skills
No API keys required. All data comes from the Nevobo (Nederlandse Volleybalbond) open API.
Prefer the CLI — it avoids Python import path issues:
sports-skills volleyball get_competitions
sports-skills volleyball get_standings --competition_id=nevobo-eredivisie-heren
sports-skills volleyball get_results --competition_id=nevobo-eredivisie-dames
sports-skills volleyball get_schedule --competition_id=nevobo-topdivisie-heren-a
Python SDK (alternative):
from sports_skills import volleyball
standings = volleyball.get_standings(competition_id="nevobo-eredivisie-heren")
results = volleyball.get_results(competition_id="nevobo-eredivisie-dames")
CRITICAL: Before calling any data endpoint, verify:
competition_id uses a valid value from references/competition-ids.md — never guess.club_id (use get_clubs to find one — the organisatiecode field).get_competitions or get_clubs to discover them.competition_id Parameter8 leagues across the top 3 tiers of Dutch volleyball are pre-configured. The competition_id follows the pattern nevobo-<league>-<gender>[-<pool>]:
nevobo-eredivisie-heren, nevobo-eredivisie-damesnevobo-topdivisie-heren-a, nevobo-topdivisie-heren-b, nevobo-topdivisie-dames-a, nevobo-topdivisie-dames-bnevobo-superdivisie-heren, nevobo-superdivisie-damesFor lower divisions (1e/2e/3e Divisie, regional, youth, beach — 6,400+ poules), use get_poules to discover them.
See references/competition-ids.md for the full reference with team counts and the Dutch volleyball pyramid.
| Command | Description |
|---|---|
get_competitions | List all available competitions and leagues |
get_standings | League table (rank, team, matches, points) |
get_schedule | Upcoming matches (teams, venue, date) |
get_results | Match results (score, set-by-set scores) |
get_clubs | List volleyball clubs (name, city, province) |
get_club_schedule | Club's upcoming matches across all teams |
get_club_results | Club's results across all teams |
get_poules | Browse Nevobo poules (for lower divisions discovery) |
get_tournaments | Tournament calendar |
get_news | Federation news |
See references/api-reference.md for full parameter lists and return shapes.
Example 1: Eredivisie standings User says: "What are the current Dutch volleyball standings?" Actions:
get_standings(competition_id="nevobo-eredivisie-heren") for menget_standings(competition_id="nevobo-eredivisie-dames") for women
Result: League tables with rank, team name, matches played, and pointsExample 2: Recent match results User says: "Show me recent Eredivisie volleyball results" Actions:
get_results(competition_id="nevobo-eredivisie-heren")
Result: Match results with home/away teams, match score (e.g. "3-1"), and set scores (e.g. ["25-21", "25-18", "21-25", "25-20"])Example 3: Club schedule User says: "What matches does LSV have coming up?" Actions:
get_clubs(limit=10) and find LSV's organisatiecode (CKL5C67)get_club_schedule(club_id="CKL5C67")
Result: Upcoming matches for all of LSV's teams with venues and datesExample 4: Second tier standings User says: "Show me the Topdivisie standings" Actions:
get_standings(competition_id="nevobo-topdivisie-heren-a") for men pool Aget_standings(competition_id="nevobo-topdivisie-heren-b") for men pool B
Result: Two pool tables with 10 teams eachExample 5: Discover lower divisions User says: "What divisions are available in Dutch volleyball?" Actions:
get_poules(regio="nationale-competitie", limit=20)
Result: List of national-level poules including 1e/2e/3e Divisie with their abbreviations and descriptionsget_scoreboardget_results for recent match results.get_rankingsget_standings for league tables.get_team_rosterget_clubs for club information.get_player_infoIf a command is not listed in the Commands table above, it does not exist.
When a command fails, do not surface raw errors to the user. Instead:
get_clubs to find the organisatiecode firstget_competitions to verify available leaguesError: sports-skills command not found
Cause: Package not installed
Solution: Run pip install sports-skills. If not on PyPI, install from GitHub: pip install git+https://github.com/machina-sports/sports-skills.git
Error: Standings returns empty list
Cause: The competition's regular season phase may have ended, or the season hasn't started yet
Solution: Use get_results to check recent results, or get_poules to discover current active poule paths
Error: Schedule returns 0 matches Cause: The competition phase has completed and no more matches are scheduled for that poule Solution: This is expected between season phases. Check other leagues (Topdivisie/Superdivisie may still be active)
Error: Club schedule/results returns error
Cause: The club_id may be incorrect
Solution: Use get_clubs to find valid club IDs (the organisatiecode field, e.g. "CKL5C67")
Error: Connection errors or timeouts Cause: The Nevobo API may be temporarily unavailable Solution: Wait a moment and retry. The API is public and unauthenticated but may have brief outages