Skip to main content

CLI tool to generate structured Git commit messages using AI.

Project description

commitly-cli 🚀🤖

Plus jamais de "commit final" ou "modifs 2" dans tes logs Git.

commitly-cli est une interface en ligne de commande (CLI) stylée avec Rich, construite sur la bibliothèque commitly, qui génère pour toi des messages de commit automatiques, clairs, contextuels… et même élégants.


🧠 Pourquoi commitly-cli ?

Tu tapes git commit -m "", puis tu bloques.

😩 Tu penses : “Je mets quoi là-dedans ?”

Avec commitly-cli, laisse l'IA s’en charger ! Elle lit les modifications (git diff --cached), comprend ce que tu as fait, et te propose un message propre et structuré.

Utilise-la comme ton copilote de commit ✈️

🧰 Prérequis

  • Python 3.7+
  • Git installé sur votre système

🧪 Installation

pip install commitly-cli  # bientôt disponible sur PyPI

Ou clone localement :

git clone https://github.com/Tostenn/commitly-cli.git
cd commitly-cli
python main.py --help

Assure-toi aussi d'avoir installé commitly :

pip install commitly

✨ Fonctionnalités principales

  • 🧠 Génération intelligente de messages de commit via IA
  • 🔍 Analyse automatique des changements (diffs Git)
  • 💅 Personnalisation du style, format et tonalité
  • 🏷️ Ajout automatique de numéros de tickets
  • ✅ Mode confirmation avec édition possible (commit.txt)
  • 🔄 Intégration directe avec Git (git add, git commit, git push)
  • 🎨 Affichage enrichi grâce à Rich
  • 🤖 Et un joli logo, parce que pourquoi pas ? 😎

🛠️ Utilisation basique

commitly-cli --add . --confirm

Cela :

  • Ajoute tous les fichiers au staging
  • Génère un message de commit via l’IA
  • Crée un fichier commit.txt modifiable à la main
  • Affiche le message et demande confirmation avant de valider le commit

Exemple avec un ticket

commitly-cli --add . --confirm --ticket "#25"

Ajoute automatiquement le ticket dans le message généré !


🧪 Exemple avancé

commitly-cli \
  --add fichier.py README.md \
  --style style.txt \
  --format format.txt \
  --recommandation conseils.txt \
  --ticket #42 \
  --push \
  --confirm

👉 Ce que ça fait :

  • Ajoute fichier.py et README.md à l’index
  • Utilise tes fichiers de style/format/conseils pour guider l'IA
  • Associe le commit au ticket #42
  • Te propose un message et te laisse l’éditer dans commit.txt
  • Envoie le commit sur le dépôt distant après confirmation

Si tu veux peaufiner ton message

Quand tu utilises --confirm, un fichier commit.txt est créé dans le dossier courant. Tu peux l'éditer avant de confirmer. Ensuite, relance avec :

python main.py --continue

🧪 Nouveau : mode simulation (--dry-run) (à venir dans la prochaine version)

Tu veux voir le message généré sans faire de commit ? Utilise :

commitly-cli --add . --ticket "#123" --dry-run

Cela affiche le message généré sans l’enregistrer dans Git. Idéal pour tester ton format ou ton style.


🔍 Options disponibles

Argument Description
-a, --add Fichiers à ajouter (par défaut .)
-f, --format Fichier texte décrivant le format de commit souhaité
-s, --style Fichier texte définissant le ton d’écriture
-r, --recommandation Conseils ou consignes personnalisées pour guider l’IA
-t, --ticket Numéro de ticket à inclure dans le commit (ex : #42)
-p, --push Envoie les modifications (git push) après le commit
--confirm Active le mode interactif avec édition possible dans commit.txt
-c, --continue Utilise le contenu de commit.txt pour effectuer le commit
--dry-run Simule la génération du message sans faire de commit
--show-format Affiche le format par défaut
--show-style Affiche le style par défaut
--show-recommandation Affiche les recommandations par défaut
--del-temp Supprime commit.txt après usage

💡 Astuce : utilise --add ! pour ne pas ajouter automatiquement de fichiers.


✍️ Personnalisation

Tu peux adapter la génération à ton style de projet grâce aux fichiers :

  • style.txt : pour un ton plus sérieux, technique, fun…
  • format.txt : structure des messages (type, module, titre…)
  • conseils.txt : notes ou contraintes supplémentaires

🧪 Cas d’usage quotidien

🧹 Un petit fix rapide

commitly-cli --add . --ticket "#123" --confirm

Ajoute tout, associe au ticket, te propose un message, tu confirmes. Boom 💥


🧱 Un gros chantier avec style

commitly-cli --add . \
  --style mon-style.txt \
  --format mon-format.txt \
  --recommandation mon-cadre.txt \
  --ticket "#88" \
  --push \
  --confirm

Tu veux une cohérence sur toute une base de commits ? Tu es servi 🍽️


🧠 Fun fact : l'outil s’est auto-amélioré ! 🤖

Tu veux une preuve que commitly-cli fonctionne ? Ce projet est littéralement son propre terrain d’entraînement.

🛠️ Au tout début, les 2 premiers commits ont été écrits à la main… à l’ancienne.
Mais dès le 3ᵉ commit, commitly-cli a pris le relais.

Et là… 💥
Au lieu d’un beau message bien structuré, il a fièrement pondu ça :

git commit -m "```"

Oui, tu lis bien : trois backticks comme message de commit.
Pourquoi ? Parce que dans les données d’exemple, on avait mis "message de commit ici", et notre jeune padawan commitly l’a pris au pied de la lettre

Mais bon… c’était ses débuts ! Depuis, l’outil a appris, s’est amélioré, et maintenant il génère des messages de commit bien plus clairs, utiles, et même élégants.

💬 Tu veux voir son évolution ?

Va jeter un œil à l’historique Git du projet et observe comment commitly-cli est passé de 🐣 à 🧙‍♂️ :
git log

Et oui, aujourd’hui ce projet utilise commitly-cli pour générer ses propres messages de commit.
C’est du commit-inception, et c’est beau 😎


🔮 À venir

🚧 Des features en préparation, accrochons-nous :

  • Scission intelligente de commits : Si tu développes plusieurs fonctionnalités en même temps, le programme détectera les zones indépendantes dans le diff et te proposera plusieurs messages adaptés pour scinder ton commit en plusieurs commits plus petits.
  • 📁 Détection automatique des fichiers pertinents
  • 🧪 Intégration facile avec des hooks Git (pre-commit)
  • 💡 Suggestions de tags ou de branches
  • 🎨 Interface web minimale

🤝 Basé sur

Ce projet repose sur :

📦 commitly : une bibliothèque magique qui transforme ton diff en message clair grâce à l’IA. C’est le moteur, commitly-cli est juste le volant


💬 Conclusion

Utilise commitly-cli, et dis adieu à :

git commit -m "changement"
git commit -m "test encore"
git commit -m "fix"

Fais briller ton historique Git comme un pro 💎


🐛 Bugs ? Idées ?

Ouvre une issue ou contacte-moi directement. Excellent 😄 ! Voici une section toute prête à intégrer au README, avec une anecdote rigolote et instructive sur l'évolution de l'outil, basée sur l’historique de commit du projet :

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

commitly_cli-1.0.5.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

Commitly_cli-1.0.5-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file commitly_cli-1.0.5.tar.gz.

File metadata

  • Download URL: commitly_cli-1.0.5.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for commitly_cli-1.0.5.tar.gz
Algorithm Hash digest
SHA256 6d30962298b230f07cce2f5631a72e0c0d22e8cc2f3d476291d59f85dbe4b5fd
MD5 9327891d1f46912848fe8a0c571dcb1b
BLAKE2b-256 1a2696b12b2521fb9d192a5418e4c433cc72c021843a8d6f73c0a8ad5f0660fa

See more details on using hashes here.

File details

Details for the file Commitly_cli-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: Commitly_cli-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 8.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.2

File hashes

Hashes for Commitly_cli-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8d69b9aea8f9efa67d61f42c6e15c4b87a438e9b9860d5e369d10908f0e6e505
MD5 3236f8631ae3e58d0525b1a13ea30cea
BLAKE2b-256 52156e142bce3f9acb290527934c9e7e89bb926a005481e7bc74ba426302224a

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