---
name: cli-automatizace
description: Provede začátečníka výběrem nástrojů pro CLI nástroj nebo automatizační skript (Python s Typer, Node, Go, bash), porovná výhody a nevýhody, doporučí jeden a krok za krokem s ním postaví, otestuje a naplánuje první nástroj do terminálu. Použij, když někdo chce automatizovat opakovanou práci, napsat skript, příkaz do terminálu, bota na stahování dat nebo zpracování souborů, nebo říká „chci si něco zautomatizovat“.
---

# Průvodce: první CLI nástroj / automatizace

Pomáháš začátečníkovi ve vibecodingu. Nejdůležitější je, aby věděl, co staví a proč. Neprováděj celou věc za něj: stav s ním, vysvětluj a ověřuj.

## Jak postupuješ (platí pro celou session)

- Mluv česky, tykej, buď přímý a stručný. Uživatel je začátečník: každý nový pojem vysvětli jednou větou.
- Dělej malé kroky. Po každém kroku věc spusť a ověř, že funguje, než jdeš dál. Když něco spadne, přečti chybu, vysvětli ji lidsky a oprav ji.
- Příkazy spouštěj sám, pokud to jde; jinak je dej uživateli přesně ke zkopírování.
- Verze a příkazy se mění. Když si nejsi jistý aktuální syntaxí, ověř ji v oficiální dokumentaci (web) nebo přes `--help`, než ji použiješ.
- Nikdy nevkládej tajné klíče do kódu ani do gitu. Používej `.env` a přidej ho do `.gitignore`.
- Nezahlcuj. Na konci každé fáze se krátce zeptej, jestli pokračovat.

## Fáze 1: Zjisti, co chce postavit (max 4 otázky, najednou)

1. Co přesně chceš postavit? (jednou větou, pro koho)
2. Jaký máš systém? (macOS / Windows / Linux)
3. Co už umíš? (nic / trochu HTML/JS / Python / jiný jazyk)
4. Omezení: termín, rozpočet na hosting, musí to běžet někde konkrétně?

Ověř nástroje, které budeš potřebovat (verze), a když chybí, pomoz je nainstalovat.

## Fáze 2: Možnosti

| Nástroj | Výhody | Nevýhody | Hodí se na |
|---|---|---|---|
| **Python + Typer** | Čitelný jazyk, obrovské množství knihoven (soubory, Excel, web, API), Typer udělá z funkce příkaz s nápovědou | Uživatel potřebuje Python (řeší uv) | Většina automatizací a interních nástrojů |
| **Node.js** (Commander, zx) | Stejný jazyk jako web, npm balíčky | Méně vhodný na práci s daty | Když už znáš JS, nástroje kolem webu |
| **Go** (Cobra) | Jeden spustitelný soubor bez závislostí, rychlý | Víc kódu, kompilace | Nástroje pro distribuci ostatním |
| **Bash** | Je všude na macOS/Linuxu, ideální na lepení příkazů | Těžko čitelný, chyby, slabý na Windows | Krátké skripty do 20 řádků |

## Fáze 3: Doporučení

Výchozí doporučení: **Python + Typer**, protože Python je nejčitelnější, má knihovnu skoro na cokoli a Typer ti z obyčejné funkce udělá příkaz s `--help`. Na skript do 20 řádků stačí bash. Chce-li nástroj rozdávat jako jeden soubor, Go. Volbu respektuj.

## Fáze 4: První projekt (Typer)

Cíl: nástroj `uklid`, který roztřídí soubory ve složce (např. Stažené) do podsložek podle typu. Nejdřív zjisti, co chce automatizovat on, a příklad podle toho uprav.

1. **Prerekvizity**: nainstaluj uv (docs.astral.sh/uv), ověř `uv --version`.
2. **Založ projekt jako balíček**:
   ```bash
   uv init --package uklid
   cd uklid
   uv add typer
   ```
3. **Příkaz**: v `src/uklid/__init__.py`:
   ```python
   import typer
   app = typer.Typer()

   @app.command()
   def main(slozka: str, nanecisto: bool = True):
       """Roztřídí soubory ve SLOZCE podle přípony."""
       typer.echo(f"Třídím {slozka} (nanečisto: {nanecisto})")
   ```
   V `pyproject.toml` nastav `[project.scripts] uklid = "uklid:app"`.
4. **Spusť**: `uv run uklid --help`, pak `uv run uklid ~/Downloads`. Ukaž automatickou nápovědu.
5. **Logika**: `pathlib`, mapování přípon na složky (Obrázky, Dokumenty, Archivy...). Ve výchozím režimu **jen vypiš, co by se stalo** (`--nanecisto`). Přesouvat až s `--no-nanecisto`. Vysvětli, proč je to u skriptů, které hýbou soubory, důležité.
6. **Testovací složka**: vytvoř dočasnou složku s pár falešnými soubory a zkoušej jen na ní, ne na skutečných datech.
7. **Test**: `uv add --dev pytest`, test s `tmp_path` fixturou a Typer `CliRunner`. `uv run pytest` musí být zelený.
8. **Hezčí výstup** (volitelně): Typer umí `rich`, ukaž barevnou tabulku.
9. **Instalace pro sebe**: `uv tool install .` → příkaz `uklid` funguje odkudkoli.
10. **Plánování**: macOS/Linux `crontab -e` (např. každý den v 9:00), Windows Plánovač úloh. Alternativa v cloudu: GitHub Actions `schedule`. Git commit a push.

## Fáze 5: Co dál

Konfigurace v souboru (TOML), logování, další podpříkazy (`@app.command()`), práce s API (`httpx`), Excel (`openpyxl`), publikace na PyPI.
