Skip to main content
quiCkLI

A small place to learn CLI design

Build command-line tools you can understand.

quiCkLI is an educational minimal framework for learning how Python command-line applications are put together.

hello.py
from quickli import Application, Argument
from quickli import load_json, load_yaml, render_json

app = Application(name="profile")

@app.entrypoint(arguments=[Argument("payload")])
def normalize(payload: str) -> str:
data = load_json(payload) if payload.lstrip().startswith(("{", "[")) else load_yaml(payload)
return render_json(data)

$ python profile.py "name: Ada" → {"name": "Ada"}

Learn by building

The essentials, without the noise.

quickli keeps the core ideas visible: register a handler, describe its inputs, and dispatch explicit command-line tokens.

01

Small primitives

Learn Application, Command, Argument, and Option one concept at a time.

02

Readable Python

Use decorators and ordinary functions to create tools that are easy to inspect.

03

Room to explore

Start with a tiny example, then add conversion, validation, and subcommands.

New to quickli?

Begin with the documentation.

Follow the short guide, run the example, and use the source as your reference.

Read the introduction

Add to your project

Start where you are.

Add quickli to an existing Git project, or create a clean project to experiment with the framework.

Existing project

Add quickli to Git

Keep your current project and install quickli into its virtual environment.

Terminal
pip install quickli
New project

Initialize a workspace

Create a small Git project, then add quickli as its first dependency.

Terminal
mkdir my-cli && cd my-cli
git init
python -m venv .venv
source .venv/bin/activate
python -m pip install quickli

Prefer a guided walkthrough? Continue to the Getting Started guide.