siddharth7113/sktime-cli

The unofficial CLI client for sktime framework

4

stars

41

commits

Python

primary language

Aug 25, 2026

updated

deep-learning
machine-learning
machine-learning-algorithms
time-series
time-series-analysis
time-series-forecasting
Browse cluster: Time Series Forecasting & Deep Learning

README

sktime-cli

The command line for sktime, built for AI agents and humans.

Search estimators, fetch datasets, inspect time series files, and run fit / predict / evaluate workflows straight from your shell.

PyPI Python Docs CI License Ruff

Terminal session running registry search, datasets load, run fit, and run predict

Read the documentation


Why a CLI

sktime is a Python library, so trying a forecaster usually means opening an editor:

import pandas as pd
from sktime.forecasting.naive import NaiveForecaster

y = pd.read_csv("airline.csv", index_col=0).squeeze()
y.index = pd.PeriodIndex(y.index, freq="M")

forecaster = NaiveForecaster(sp=12)
forecaster.fit(y)
print(forecaster.predict(fh=range(1, 13)))

The same forecast, from the shell:

sktime-cli run fit-predict "NaiveForecaster(sp=12)" --data airline.csv --fh 1:12

Both print the same twelve numbers. The difference is what you needed to know first: that NaiveForecaster lives in sktime.forecasting.naive, and that sktime wants a PeriodIndex rather than the strings the csv gave you. The CLI works both of those out for you, from the file and the estimator name.

What you get

Every command is one process. It reads files or names, calls sktime, writes results, and exits with a meaningful code.

  • Fitted models are ordinary files. No sessions, handles, or daemons. run fit writes a .zip you can copy, commit, or delete, and any later command picks it up by path. Run something twice and you get the same answer.
  • Search for an estimator instead of looking one up. registry search forecaster -t capability:missing_values=true lists every forecaster that handles gaps, marking the ones whose dependencies you already have. Results come from a disk cache, so repeat searches are cheap.
  • Name a model instead of building one. "NaiveForecaster(sp=12)" is the whole configuration. * composes a pipeline, | a multiplexer, and + a transformer union, so "Deseasonalizer() * NaiveForecaster()" is a model too.
  • Reads the files you already have. csv, parquet, json, .ts, .tsf, and .arff go in. --format human|agent|json|quiet comes out.
  • Failures say what to do next. A missing optional dependency exits 3 with the install command in the error's hint. Nothing fails with a bare traceback.

Installation

uv tool install sktime-cli   # or: pip install sktime-cli

Check the setup and see which optional dependencies are available:

sktime-cli doctor
Output of sktime-cli doctor, listing sktime version, cache state, and optional dependencies

Quickstart

# What can I use?
sktime-cli registry search forecaster -t capability:missing_values=true
sktime-cli registry describe NaiveForecaster

# Get data.
sktime-cli datasets load airline --output airline.csv
sktime-cli data inspect airline.csv

# Fit, predict, evaluate. Estimators are given as sktime spec strings.
sktime-cli run fit "NaiveForecaster(sp=12)" --data airline.csv --model-out model.zip
sktime-cli run predict --model model.zip --fh 1:12
sktime-cli run evaluate "NaiveForecaster(sp=12)" --data airline.csv --fh 1:12 \
  --metric MeanAbsolutePercentageError

--data takes either a file path or a dataset name, so once you know the name you can skip the download and pass --data airline directly. A path is read wins, so a local airline.csv shadows the built-in airline dataset.

For a longer walkthrough, see the quickstart.

Commands

GroupCommandsWhat it does
registrysearch · describe · tags · typesFind sktime estimators by scitype, name, and capability tag
datasetslist · describe · loadBrowse and fetch built-in, UCR/UEA, Monash, and fpp3 datasets
catalogueslist · getBrowse sktime's benchmark catalogues
datainspect · convert · splitDetect mtypes and scitypes, convert formats, split temporally and into folds
runfit · predict · fit-predict · transform · detect · evaluateOne-shot workflows for forecasting, classification, transformation and detection
modelinspectLook inside a saved model artifact and round-trip its spec
metricslist · scoreList metric objects and score predictions against observations
(top level)check · version · env · doctor · cacheValidate an object against sktime's API, environment info, health check, workspace

Every option is listed in the CLI reference, which is generated from the application itself.

Built for AI agents

Add --json to any command and you get exactly one parseable JSON document on stdout. Errors are JSON on stderr, with stable codes and a hint field that usually contains the fix.

JSON output from a command next to a structured error record and its exit code
ExitMeaning
0Success
1Library or unexpected failure
2Usage error
3Missing optional dependency, and the hint says what to install
4Estimator, dataset, or model not found
5Data validation or spec error

Install the skill

The full agent contract and task recipes live in an agent skill that also ships inside the package, at the location package-bundled skills use. Add sktime-cli to the project, then let library-skills find it:

uv add sktime-cli                  # or: pip install sktime-cli
uvx library-skills --claude        # installs the skills you pick from your packages

That symlinks the skill into .agents/skills/, and --claude adds .claude/skills/ for Claude Code. Your agent then knows how to drive the CLI. To skip the prompt, name it: uvx library-skills --claude --skill sktime-cli.

If you installed the CLI as a standalone tool rather than as a project dependency, pull the skill straight from this repository:

npx skills add siddharth7113/sktime-cli

Or copy the one file yourself:

mkdir -p ~/.claude/skills/sktime-cli
curl -fsSL https://raw.githubusercontent.com/siddharth7113/sktime-cli/main/skills/sktime-cli/SKILL.md \
  -o ~/.claude/skills/sktime-cli/SKILL.md

For the details, see using sktime-cli from an agent.

Documentation

Full documentation is at sktime-cli.readthedocs.io:

Status

sktime-cli is an independent, unofficial command-line client for sktime. It is not maintained by or affiliated with the sktime project.

Version 0.0.2 is an early alpha release. Discovery and one-shot runs work, and the roadmap lists what comes next.

Contributing

Issues and pull requests are welcome. To set up a development environment, run the checks, and build the docs, see Contributing.

License

BSD 3-Clause, matching sktime.

Contributors

siddharth7113

41 commits

siddharth7113/sktime-cli

The unofficial CLI client for sktime framework

4

stars

41

commits

Python

primary language

Aug 25, 2026

updated

deep-learning
machine-learning
machine-learning-algorithms
time-series
time-series-analysis
time-series-forecasting
Browse cluster: Time Series Forecasting & Deep Learning

README

sktime-cli

The command line for sktime, built for AI agents and humans.

Search estimators, fetch datasets, inspect time series files, and run fit / predict / evaluate workflows straight from your shell.

PyPI Python Docs CI License Ruff

Terminal session running registry search, datasets load, run fit, and run predict

Read the documentation


Why a CLI

sktime is a Python library, so trying a forecaster usually means opening an editor:

import pandas as pd
from sktime.forecasting.naive import NaiveForecaster

y = pd.read_csv("airline.csv", index_col=0).squeeze()
y.index = pd.PeriodIndex(y.index, freq="M")

forecaster = NaiveForecaster(sp=12)
forecaster.fit(y)
print(forecaster.predict(fh=range(1, 13)))

The same forecast, from the shell:

sktime-cli run fit-predict "NaiveForecaster(sp=12)" --data airline.csv --fh 1:12

Both print the same twelve numbers. The difference is what you needed to know first: that NaiveForecaster lives in sktime.forecasting.naive, and that sktime wants a PeriodIndex rather than the strings the csv gave you. The CLI works both of those out for you, from the file and the estimator name.

What you get

Every command is one process. It reads files or names, calls sktime, writes results, and exits with a meaningful code.

  • Fitted models are ordinary files. No sessions, handles, or daemons. run fit writes a .zip you can copy, commit, or delete, and any later command picks it up by path. Run something twice and you get the same answer.
  • Search for an estimator instead of looking one up. registry search forecaster -t capability:missing_values=true lists every forecaster that handles gaps, marking the ones whose dependencies you already have. Results come from a disk cache, so repeat searches are cheap.
  • Name a model instead of building one. "NaiveForecaster(sp=12)" is the whole configuration. * composes a pipeline, | a multiplexer, and + a transformer union, so "Deseasonalizer() * NaiveForecaster()" is a model too.
  • Reads the files you already have. csv, parquet, json, .ts, .tsf, and .arff go in. --format human|agent|json|quiet comes out.
  • Failures say what to do next. A missing optional dependency exits 3 with the install command in the error's hint. Nothing fails with a bare traceback.

Installation

uv tool install sktime-cli   # or: pip install sktime-cli

Check the setup and see which optional dependencies are available:

sktime-cli doctor
Output of sktime-cli doctor, listing sktime version, cache state, and optional dependencies

Quickstart

# What can I use?
sktime-cli registry search forecaster -t capability:missing_values=true
sktime-cli registry describe NaiveForecaster

# Get data.
sktime-cli datasets load airline --output airline.csv
sktime-cli data inspect airline.csv

# Fit, predict, evaluate. Estimators are given as sktime spec strings.
sktime-cli run fit "NaiveForecaster(sp=12)" --data airline.csv --model-out model.zip
sktime-cli run predict --model model.zip --fh 1:12
sktime-cli run evaluate "NaiveForecaster(sp=12)" --data airline.csv --fh 1:12 \
  --metric MeanAbsolutePercentageError

--data takes either a file path or a dataset name, so once you know the name you can skip the download and pass --data airline directly. A path is read wins, so a local airline.csv shadows the built-in airline dataset.

For a longer walkthrough, see the quickstart.

Commands

GroupCommandsWhat it does
registrysearch · describe · tags · typesFind sktime estimators by scitype, name, and capability tag
datasetslist · describe · loadBrowse and fetch built-in, UCR/UEA, Monash, and fpp3 datasets
catalogueslist · getBrowse sktime's benchmark catalogues
datainspect · convert · splitDetect mtypes and scitypes, convert formats, split temporally and into folds
runfit · predict · fit-predict · transform · detect · evaluateOne-shot workflows for forecasting, classification, transformation and detection
modelinspectLook inside a saved model artifact and round-trip its spec
metricslist · scoreList metric objects and score predictions against observations
(top level)check · version · env · doctor · cacheValidate an object against sktime's API, environment info, health check, workspace

Every option is listed in the CLI reference, which is generated from the application itself.

Built for AI agents

Add --json to any command and you get exactly one parseable JSON document on stdout. Errors are JSON on stderr, with stable codes and a hint field that usually contains the fix.

JSON output from a command next to a structured error record and its exit code
ExitMeaning
0Success
1Library or unexpected failure
2Usage error
3Missing optional dependency, and the hint says what to install
4Estimator, dataset, or model not found
5Data validation or spec error

Install the skill

The full agent contract and task recipes live in an agent skill that also ships inside the package, at the location package-bundled skills use. Add sktime-cli to the project, then let library-skills find it:

uv add sktime-cli                  # or: pip install sktime-cli
uvx library-skills --claude        # installs the skills you pick from your packages

That symlinks the skill into .agents/skills/, and --claude adds .claude/skills/ for Claude Code. Your agent then knows how to drive the CLI. To skip the prompt, name it: uvx library-skills --claude --skill sktime-cli.

If you installed the CLI as a standalone tool rather than as a project dependency, pull the skill straight from this repository:

npx skills add siddharth7113/sktime-cli

Or copy the one file yourself:

mkdir -p ~/.claude/skills/sktime-cli
curl -fsSL https://raw.githubusercontent.com/siddharth7113/sktime-cli/main/skills/sktime-cli/SKILL.md \
  -o ~/.claude/skills/sktime-cli/SKILL.md

For the details, see using sktime-cli from an agent.

Documentation

Full documentation is at sktime-cli.readthedocs.io:

Status

sktime-cli is an independent, unofficial command-line client for sktime. It is not maintained by or affiliated with the sktime project.

Version 0.0.2 is an early alpha release. Discovery and one-shot runs work, and the roadmap lists what comes next.

Contributing

Issues and pull requests are welcome. To set up a development environment, run the checks, and build the docs, see Contributing.

License

BSD 3-Clause, matching sktime.

Contributors

siddharth7113

41 commits

Languages

Python

100.0%