python-cli-typer

📁 narumiruna/telegram-bot 📅 2 days ago
0
总安装量
2
周安装量
安装命令
npx skills add https://github.com/narumiruna/telegram-bot --skill python-cli-typer

Agent 安装分布

opencode 2
codex 2
claude-code 2
replit 1
amp 1
cursor 1

Skill 文档

Python CLI with Typer

Overview

Use Typer for ergonomic CLI construction. Core principle: keep CLI entry points explicit and testable.

Install

uv add typer

Quick Reference

Task Pattern
Single command @app.command()
Options function args with defaults
Multiple commands multiple @app.command()

Workflow

  • Define a typer.Typer() app in cli.py.
  • Keep command functions small; move logic into separate modules.
  • Run CLI via uv run python -m <module> or uv run python cli.py.

Example

import typer

app = typer.Typer()

@app.command()
def greet(name: str, count: int = 1) -> None:
    for _ in range(count):
        typer.echo(f"Hello, {name}!")

if __name__ == "__main__":
    app()

Usage:

uv run python cli.py --help
uv run python cli.py Alice
uv run python cli.py Alice --count 3

Multiple commands:

import typer

app = typer.Typer()


@app.command()
def create(name: str) -> None:
    """Create a new item."""
    typer.echo(f"Creating {name}...")


@app.command()
def delete(name: str, force: bool = False) -> None:
    """Delete an item."""
    if not force:
        if not typer.confirm(f"Delete {name}?"):
            raise typer.Abort()
    typer.echo(f"Deleted {name}")


if __name__ == "__main__":
    app()

Common Mistakes

  • Putting heavy business logic inside CLI functions.
  • Forgetting to wire if __name__ == "__main__" for script entry.

Red Flags

  • CLI guidance that ignores Typer when Typer is the chosen framework.