Skip to main content

Orchestrator for Git change shipments

Project description

tagi

AI Cost Tracking

PyPI Version Python License AI Cost Human Time Model

  • 🤖 LLM usage: $0.0325 (4 commits)
  • 👤 Human dev: ~$311 (3.1h @ $100/h, 30min dedup)

Generated on 2026-05-26 using openrouter/qwen/qwen3-coder-next


tagi to paczka Python i CLI do orkiestracji wysyłania zmian Git, a nie zamiennik komendy git.

Pozycjonowanie

  • Git odpowiada za wykonanie (status, add, commit, push).
  • tagi odpowiada za analizę, grupowanie, planowanie i bezpieczne uruchomienie workflow.
  • gh/glab odpowiadają za integrację i auth z providerami.

Cel

tagi pomaga zdecydować, co wysłać i jak to opisać, a następnie uruchamia istniejące narzędzia (git, opcjonalnie gh/glab) po jawnym potwierdzeniu użytkownika.

Zasady projektu

  • jawność przed magią,
  • preview → confirm → execute,
  • brak ukrywania realnych komend,
  • deterministyczne tagowanie jako domyślne.
  • LLM opcjonalnie do redakcji opisów, nie do sterowania logiką wysyłki.

Zakres odpowiedzialności

Co tagi powinien robić

  • analizować git status --porcelain i diffy,
  • budować grupy zmian na podstawie heurystyk,
  • proponować paczki wysyłkowe i plan wykonania,
  • generować draft tytułu i treści opisu commita,
  • uruchamiać git i opcjonalnie gh/glab dopiero po decyzji użytkownika.

Czego tagi nie powinien robić

  • zastępować git add/commit/push,
  • implementować własnego modelu stanu repo poza .git,
  • ukrywać jakie komendy wykona,
  • zmieniać semantyki commit/push,
  • zastępować workflow branch/rebase/merge.

Komendy

tagi scan <path> [--grouped]
tagi list-groups <path>
tagi stats <path>
tagi filter <tags> <path> [--all]
tagi file <file_path> <path>
tagi inspect <tag> <path> [--diff]
tagi summary <path> [--output FILE]
tagi draft <tag> <path> [--template TEMPLATE]
tagi send <tag> <path> [--dry-run] [--push] [--template TEMPLATE]
tagi publish <tag> <path> [--dry-run]
  • scan — analiza zmian w repozytorium (z opcją --grouped do grupowania po tagach)
  • list-groups — lista paczek i tagów
  • stats — statystyki zmian (liczba plików, linii, rozkład typów i tagów)
  • filter — filtrowanie plików po tagach (comma-separated, np. small,docs; --all wymaga wszystkich tagów)
  • file — szczegóły pojedynczego pliku (wszystkie tagi, linie zmienione, score ryzyka)
  • inspect — podgląd paczki i ryzyka (z opcją --diff do pokazania zmian)
  • summary — generuj kompleksowy raport podsumowujący (opcjonalnie zapisz do pliku)
  • draft — propozycja opisu commita z wyborem szablonu (default, conventional, detailed)
  • send — po potwierdzeniu wykonuje git add i git commit; push jest opcjonalny,
  • publish — rozszerzenie o PR/MR przez provider z auto-detection (GitHub/GitLab).

Architektura (kierunek)

src/tagi/
  scanner/
  cli.py
  config.py
  models/
    change.py
    group.py
    plan.py
  scanner/
    status.py
    diff.py
    files.py
  heuristics/
    tags.py
    scoring.py
    rules.py
  planner/
    grouper.py
    selector.py
    preview.py
  composer/
    commit_message.py
    summary.py
  executor/
    git.py
    publish.py
  providers/
    base.py
    github.py
    gitlab.py
  llm/
    llx_adapter.py

## Przykłady użycia

```bash
# Podstawowe skanowanie
tagi scan /path/to/repo

# Skanowanie z grupowaniem po tagach
tagi scan /path/to/repo --grouped

# Statystyki zmian
tagi stats /path/to/repo

# Filtrowanie po jednym tagu
tagi filter "#small" /path/to/repo

# Filtrowanie po wielu tagach (OR logic - pasuje do dowolnego)
tagi filter "#small,#docs" /path/to/repo

# Filtrowanie po wielu tagach (AND logic - wymaga wszystkich)
tagi filter "#config,#small" /path/to/repo --all

# Szczegóły pojedynczego pliku
tagi file README.md /path/to/repo

# Podgląd tagu ze statystykami
tagi inspect #docs /path/to/repo

# Pokaż bezpieczne zmiany do wysłania najpierw
tagi safe /path/to/repo

# Generuj raport podsumowujący
tagi summary /path/to/repo

# Zapisz raport do pliku
tagi summary /path/to/repo --output report.txt

# Lista grup zmian
tagi list-groups /path/to/repo

# Inspekcja z podglądem diffów
tagi inspect #small /path/to/repo --diff

# Draft z konwencjonalnym formatem
tagi draft #small /path/to/repo --template conventional

# Wysłanie z pushem
tagi send #small /path/to/repo --push --template detailed

# Publikacja PR/MR
tagi publish #small /path/to/repo

Konfiguracja

Utwórz plik tagi.toml w katalogu repozytorium:

[rules]
"frontend/" = "#frontend"
"backend/" = "#backend"
"migration/" = "#risky"

[colors]
# Własne kolory dla tagów (nazwy kolorów Rich)
"#frontend" = "blue"
"#backend" = "green"
"#risky" = "red"

[heuristics]
# Własne heurystyki - mapuj wzorce do wielu tagów
"api/" = ["#api", "#backend"]
"cli/" = ["#cli", "#tool"]
"migration/" = ["#risky", "#database"]

[tag_definitions]
# Opisy tagów
"#small" = "Małe zmiany (< 10 linii)"
"#large" = "Duże zmiany (> 100 linii)"
"#risky" = "Zmiany wysokiego ryzyka"

[templates]
# Własne szablony komunikatów commitów
default = "{tag}: {count} plików ({files})"
detailed = "Commit {tag}\n\nZmienione pliki ({count}):\n{files}\n\nWygenerowane przez tagi"

[ignore]
# Wzorce do ignorowania podczas skanowania
["node_modules/", ".git/", "__pycache__/", "*.pyc", ".idea/", ".vscode/"]

Definicja produktu

tagi to orchestrator wysyłania zmian Git: analizuje nie wysłane pliki, grupuje je hashtagami, proponuje sensowne paczki commitów i uruchamia istniejące narzędzia Git/GitHub/GitLab do publikacji.

License

Licensed under Apache-2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tagi-0.15.1.tar.gz (406.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tagi-0.15.1-py3-none-any.whl (31.9 kB view details)

Uploaded Python 3

File details

Details for the file tagi-0.15.1.tar.gz.

File metadata

  • Download URL: tagi-0.15.1.tar.gz
  • Upload date:
  • Size: 406.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tagi-0.15.1.tar.gz
Algorithm Hash digest
SHA256 b183fecf122e384253b86482f73f76927131fae6c95a40fb31f4dc82c7019da2
MD5 2766ed3b621df4faa4ae0be4436c3bdd
BLAKE2b-256 b5f79a0378df802114175ee35ccd93cd9ad7b35b8d671a8ed8210d74040ec8b5

See more details on using hashes here.

File details

Details for the file tagi-0.15.1-py3-none-any.whl.

File metadata

  • Download URL: tagi-0.15.1-py3-none-any.whl
  • Upload date:
  • Size: 31.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for tagi-0.15.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c5756b982c667ce15b892b15af5124c56679e3e988023bbe8e0cda7fae8bec88
MD5 2aff0aca380cb98700346703d5a34874
BLAKE2b-256 fa447349c1a7cebe81d9c36e3fae10d8363a67c577fc5e6b02ed5ea1beaf8d88

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page