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.1.0.tar.gz (8.9 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.1.0-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: commitly_cli-1.1.0.tar.gz
  • Upload date:
  • Size: 8.9 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.1.0.tar.gz
Algorithm Hash digest
SHA256 f04fd970d5dc62f3d9b20cec29e612d5f231c2a61516ea3e17465b4b5005ef88
MD5 4930e8ab1e3044d5bccf712593821c84
BLAKE2b-256 80ad35e0c913e173f0b76f97117e145f84a4b229153a5a2c4e608c64abecec52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Commitly_cli-1.1.0-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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe0a04d6b2be29968419184b7141569e8ff20b6efbb5a2ca70948c411be81cf6
MD5 740ccde494625520c7781fd6788ba8e9
BLAKE2b-256 343164f16c23d60b6cca2e0ea0aca4570018cebca038be9df824b5f35ef4befe

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