cli-printing-press
claudeDescribe your API. Get a production CLI. Generates Go CLI tools from OpenAPI specs or natural language descriptions.
20 skills
SportsDataverse engineering toolkit: 25 skills and 10 agents covering the ship lifecycle, R/Python porting, the raw/data producer pipeline, model spines, provider onboarding, and documentation -- with an archetype router that loads the right conventions on session start.
Plugin sdv-toolkit from marketplace sportsdataverse in sportsdataverse/.github. Commands read from the repo's manifest — 2 days ago.
This plugin runs code on your machine — its hooks fire automatically on events like tool use and it starts local MCP servers. The exact commands are listed below; read them before installing.
sdv-add-sourceUse when adding any new league, sport, endpoint, or provider surface to sdv-py — one workflow across every provider (ESPN, Fox Bifrost, CBS NAPI, Yahoo, 247Sports, Torvik). Phases — (1) capture real response bodies with structured id discovery, error-envelope skip, and atomic writes, (2) extend the
sdv-api-syncUse to turn an open `api-sync` tracking issue in an SDV R package (cfbfastR for the CFBD API, hoopR for the CBBD API) into a reviewable PR that adds the missing upstream endpoints as wrappers in the package's own style and adds drifted query params to existing wrappers. The issue is opened daily by
sdv-assuring-data-pipelinesData quality validation and observability for data pipelines. Combines Great Expectations and Pandera for data validation with OpenTelemetry and Prometheus for monitoring and alerting.
sdv-building-data-pipelinesBuild production batch data pipelines with Polars, DuckDB, and PyArrow. Covers ETL patterns, medallion architecture, partitioning, and CRUD operations. Use when designing or implementing data ingestion, transformation, and loading workflows in Python.
sdv-conventionsUse when working in any SportsDataverse repo to load that repo archetype's binding conventions — the rules that differ between sdv-py, a -raw producer, a -data producer, and an R package, and that are the usual source of drift when moving between repos. Loaded automatically by the SessionStart route
sdv-data-pipelineUse for the full producer lifecycle in an SDV -raw / -data / -db repo. Phases — (1) standardize the repo onto the template (root pyproject/uv.lock, python/ + tests/ split, bash-only scripts/, CI, R-chain retirement), (2) decide placement BEFORE creating any script — the placement-decides-lifecycle r
sdv-dataset-lifecycleUse when a new or updated release tag needs to reach every downstream surface it touches — a fresh dataset, new assets on an existing tag, or a schema change (new column/season/dtype) on a dataset that already ships. Drives the 12-surface propagation checklist across five repo targets (the `<league>
sdv-documentUse when producing or back-filling documentation surface in a SportsDataverse repo. Phases — (1) generate a col_name/type/description returns table as a Python schema YAML from a sample payload or a live DataFrame schema, writing descriptions to manual_column_descriptions.yaml and NEVER to schemas/*
sdv-guideUse to find out what the sdv-toolkit contains and which part to reach for, without needing to remember any of it. Renders the catalog as a runbook — every skill and agent with a one-line "when to reach for it", its phase menu, which reviewers it dispatches, and what it hands off to — plus the hook i
sdv-learnUse when a durable finding surfaces mid-session that should outlive the session — a gotcha with a reproducible detection test, a convention that differs by repo, a failure mode, a method insight, or a routing correction. Triages whether it belongs in the toolkit at all (durable org knowledge), in th
sdv-metric-parityUse when a metric is shown against a percentile ladder, rank or league average built by another code path — GOP box/percentile cells, sdv-db percentiles, -data summary ladders, team/player ranks — and before merging any change to a metric's definition (numerator, denominator, filter, population, ori
sdv-model-buildUse when executing a model-spine implementation plan or building any oracle-gated analytics module in an SDV repo — prediction stacks, ratings engines, projection and impact models, simulators, backtests. Phases — (0) capture the external oracle/validation corpus into committed fixtures (Torvik/KenP
sdv-modelingThe single modeling reference for the SportsDataverse ecosystem — read before writing model code, not after it breaks. Answers which method fits the problem, what data feeds it, what has already been tried and rejected, which metric gates it, how to write the fit without a silent panel-data failure,
sdv-polarsHigh-performance DataFrame library for Python ETL, analytics, and pandas migration. Use for expression-based data manipulation with lazy query optimization, parallel execution, streaming out-of-core processing, Arrow interoperability, and optional GPU execution.
sdv-portUse when porting logic between R, Python, and dataframe engines in the SportsDataverse ecosystem, in any direction. Directions — r-to-python (nflfastR / cfbfastR / cfbscrapR / baseballr / hoopR / bigballR into sdv-py), python-to-r (sdv-py into cfbfastR / hoopR / wehoop / baseballr / fastRhockey / so
sdv-python-performance-optimizationProfile and optimize Python code using cProfile, memory profilers, and performance best practices. Use when debugging slow Python code, optimizing bottlenecks, or improving application performance.
sdv-r-coverageUse to raise test coverage of a SportsDataverse R package (cfbfastR, hoopR, wehoop, baseballr, fastRhockey, oddsapiR, …) or to set up its coverage badge — "improve coverage", "why is coverage so low", "add a Codecov badge", "the coverage badge says unknown", "add offline tests". Reads per-file cover
sdv-regen-docsRegenerate sdv-py reference docs, verify the Docusaurus build, and snapshot a versioned archive at release.
sdv-repo-auditUse to audit a whole SportsDataverse repo's documentation, currency and public polish at one commit, read-only — after a big merge or layout move, before a release, or when asked "is the README/CONTRIBUTING/CHANGELOG still true", "are we behind on the release or deps", "what does the site look like
sdv-reprocessUse when a -raw corpus has to be rebuilt because sportsdataverse-py changed what it produces — after an sdv-py fix to play types, EPA/WPA or end states lands, on a SCHEMA_REV bump, or for "rev-N reprocess", "rebuild the finals", "bump the lock and reprocess", "re-run the corpus after the sdv-py fix"
sdv-research-paperRuns a SportsDataverse research paper (SSAC, CMSAC, JQAS, an arXiv preprint, a model write-up) from question to submission as a gated scientific process, so every claim in the abstract survives a hostile reviewer armed with the paper's own data. Ten gated phases (design freeze, analysis, claims audi
sdv-review-prUse when asked to review a pull request, branch, or diff in a SportsDataverse org repo or a saiemgilani repo (game-on-paper-app, sdv-swagger, Sports-Research-Papers, dotfiles), including the data platform (sdv-db, sdv-orch, sportsdataverse-web) and outside-contributor PRs — before merge, before appr
sdv-shipUse when landing any change in a SportsDataverse Python repo — the full ship lifecycle, enterable at any phase. Phases: (1) regenerate codegen docs, (2) preflight — ruff, the mypy ratchet, and tests scoped to changed files, (3) commit and verify it landed, (4) push, (5) triage automated review comme
sdv-triageUse to work the inbound queue across the SportsDataverse GitHub org — open issues and pull requests across the ~40 repos, which no other skill looks at. Sweeps (bounded per run, ordered by staleness and label), classifies each item via the sdv-issue-triage agent, does the safe work autonomously, and
sdv-working-in-notebooksUse for Jupyter, JupyterLab, marimo, and Google Colab workflows. Choose this skill when creating, converting, or improving reproducible notebooks for data exploration, analysis, documentation, or teaching.
sdv-dataset-coverage-auditorUse to audit how far a dataset — or the full inventory — has propagated across the 12-surface checklist `sdv-dataset-lifecycle` drives (release asset, Python loader, loader schema, returns table, reference docs, R parity loader, DB catalog row, Postgres ETL, API exposure, platform freshness, validat
sdv-docs-reviewerUse to audit or produce the three-column returns table (col_name, type, description) across sdv-py and the SportsDataverse R packages — the one documentation artifact both languages share. Modes — audit (find functions and endpoints missing a returns table, schema columns with empty descriptions, an
sdv-harness-triageUse to triage a WARN finding from the sdv-py validation harness, dispatched with a finding_type. Judges whether the finding is a real regression or an expected/benign data change, and emits a Verdict. finding_type values — sweep (a null-rate spike or mean-shift versus the prior release), extraction
sdv-issue-triageUse to classify a single open GitHub issue or pull request in a SportsDataverse repo. Read-only — it never comments, labels, closes, pushes, or merges; it returns a verdict for a human or a calling skill to act on. Returns exactly one of six verdicts — actionable-now (clear, reproducible, small; nam
sdv-model-reviewerUse before merging new model or validation code — a model-spine phase, a ratings engine, a backtest, a simulator — to audit its correctness contract. Lenses — gate-integrity (gates derived from observed values, never lowered, train/holdout seasons disjoint), leakage-boundary (the as-of-date split ac
sdv-paper-reviewerUse before submitting a SportsDataverse research paper or abstract (SSAC, CMSAC, JQAS, preprint, model write-up) to review it the way a hostile referee would, against the paper's own code, numbers file and git history. Dispatched with a lens — design (holdout prior access across every program that s
sdv-parity-reviewerUse after porting a module between R and Python (either direction — nflfastR/cfbfastR/hoopR/wehoop/bigballR ↔ sdv-py, or a TS/Scala source like the hoop-explorer port) to audit the ported code for the recurring cross-language bug classes and verify parity-test coverage. Flags int-vs-str ID mismatche
sdv-python-reviewerUse after writing or editing Python in sdv-py, dispatched with a lens. Lenses — polars (code must run on both polars 1.x and 2.x: pin >=1.0,<3, the lock resolves 2.0 on Python >=3.10 and 1.36 on 3.9; flags MUST-FIX removed API that raises — 0.18-era names such as groupby/with_row_count/apply/pl.coun
sdv-r-reviewerUse when reviewing R code or documentation in a SportsDataverse R package (cfbfastR, hoopR, wehoop, baseballr, fastRhockey, softballR, nflseedR, cfbseedR), dispatched with a lens. Owns the SDV-specific findings — roxygen @param/@return-table/@examples completeness, _pkgdown.yml reference coverage, a
sdv-repo-auditorUse to run ONE lens of a whole-repo docs, currency and polish audit on a SportsDataverse repo at a pinned commit, dispatched by sdv-repo-audit with a lens and an archetype — a primary plus any secondaries for a mixed repo (sdv-py, producer, r-package, js-package, web-app, db-service, python-package,
context7connects to: https://mcp.context7.com/mcp
sdv-docsruns: uvx --from sportsdataverse[mcp]>=0.2.0b1 sdv-docs
python "${CLAUDE_PLUGIN_ROOT}/hooks/sdv_router.py" 2>/dev/null || true
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null); case "$f" in *_espn_ext.py|*/tools/codegen/_generated/*|*/docs/docs/*/reference/*) e
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null | tr '\\' '/'); case "$f" in */.superpowers/sdd/task-*) echo 'BLOCKED: flat SDD task a
python "${CLAUDE_PLUGIN_ROOT}/hooks/note_trycatch_warning.py"
python "${CLAUDE_PLUGIN_ROOT}/hooks/block_shared_stash.py"
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qiE 'co-authored-by:[[:space:]]*.*(claude|copilot|gpt|gemini|
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qiE 'espn_capture_league|gen_returns_doc|crawl|for [a-z_]+ in
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git commit' && { s=$(git diff --cached --name-only 2>/dev
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git commit' && [ -f recipe/meta.yaml ] && { s=$(git diff
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git push' && [ -f tools/codegen/generate.py ] && { r=$(gi
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git commit' && { for p in $(git diff --cached --name-only
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git commit' && b=$(git branch --show-current 2>/dev/null)
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null | tr '\\' '/'); case "$f" in *.py) [ -f "$f" ] || exit 0; if [ -x .venv/Scripts/ruff.e
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null); case "$f" in *tools/codegen/endpoints/*.yaml|*tools/codegen/templates/*|*_espn_parse
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null); case "$f" in *tools/codegen/endpoints/*.yaml) { grep -q 'parser:' "$f" 2>/dev/null &
f=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))" 2>/dev/null); case "$f" in */R/*.R) echo 'REMINDER (R): regenerate docs/NAMESPACE after editing R/
c=$(python -c "import json,sys; print(json.load(sys.stdin).get('tool_input',{}).get('command',''))" 2>/dev/null); printf '%s' "$c" | grep -qE 'git commit' && { h=$(git log -1 --oneline 2>/dev/null); n
Describe your API. Get a production CLI. Generates Go CLI tools from OpenAPI specs or natural language descriptions.
20 skills
Sentiment analysis on text data
1 skill · 1 command
Turn your API spec into type-safe code: TypeScript types, Zod schemas, Axios clients, React Query hooks and more from an OpenAPI spec, with the Kubb MCP server wired in.
2 skills · 3 commands · 1 agent · 1 MCP server · hooks
Manage ESPN fantasy drafts and season transactions with configurable approval limits and a multi-team portfolio dashboard.
4 skills · 3 MCP servers
Official Polar skills for billing, subscriptions, and local development.
2 skills
Use all 201 TA-Lib indicators in native Polars expressions, grouped time series and lazy pipelines.
1 skill
This page updates itself from your repo. Add the badge to your README, or get it Featured to pin it above the organic results with a followed link to your site.