Writing commits can be tedious. Review the files you changed, think about what actually happened, come up with a message that makes sense; and do that every single time you commit. It adds up. I'm a big fan of Conventional Commits, and I wanted to build something that helps people keep using it without wasting time thinking about the perfect message every single time. So I built gitai. 🚀 gitai reads your staged git diff, calls your configured LLM, and gives you 3 commit message suggestions to pick from. That's it. You stage your changes, run gitai, and it gives you something like: feat(auth): add JWT refresh token rotation Some things worth knowing: - Supports Ollama, run it fully local, no API key needed - Also works with OpenAI, Anthropic, and Gemini - Two commit styles: Conventional Commits or free-form - Optional gitmoji support - Config lives in a simple TOML file (~/.gitai.toml) It's open source, it's on PyPI, and I use it every day. pip install gitai-cli GitHub: https://lnkd.in/gEk3AYPM PyPI: https://lnkd.in/gyibCB8H If you try it, let me know what you think. PRs and issues are very welcome. 🙌 #Python #OpenSource #DevTools #Git #CLI
Automate Git Commits with gitai
More Relevant Posts
-
API Documentation in Django REST Framework — Simplified with drf‑spectacular Building APIs is easy. Maintaining them at scale? That’s where things get tricky. As teams grow and endpoints multiply, keeping a clear API contract becomes essential. That’s why I explored drf‑spectacular, a powerful tool that turns your DRF code into a clean, OpenAPI‑compliant schema — ready for Swagger and Redoc. In my latest Medium article, I break down: How to set up drf‑spectacular in minutes Why schema generation matters for scaling and collaboration Integrating JWT authentication for secure testing Hiding internal endpoints and documenting complex responses Best practices for production‑ready API docs Think of it as reverse‑engineering your API into documentation. 👉 Read the full article here: https://lnkd.in/dbuTaNym #Django #DRF #API #Documentation #OpenAPI #Swagger #Redoc #Python #BackendDevelopment
To view or add a comment, sign in
-
-
>>Not every PR gets merged. This one taught me more than most that did. While contributing to Scipy-stubs, I worked on an issue: "CI: only type-check and stubtest if needed." The goal was simple, avoid running expensive checks unless the relevant files actually changed." My approach : - Initially i started with `dorny/paths-filter` ( for adding two condition as using `paths` we connot have two condition. - Then faced some `zizmor` errors highlighted the risk. To guard from supply-chain attach we used (full length commit SHA instead of a mutable tag like v6. (https://lnkd.in/gAG4vfyn) Then we decided instead of using any third party (dorny/paths-filter), we moved towards splitting the workflow in two files, (I've created stubset.yml) > And then came the real insight, splitting the workflow meant we could no longer require the typecheck/typetest jobs to pass as status checks, which would silently break GitHub's auto-merge feature. That was the dealbreaker. The PR is closed, but the decision was right. A workflow that silently breaks auto-merge causes more problems than it solves. Not every contribution needs to be merged to be valuable. Sometimes mapping the dead ends is enough. If this saves someone an hour of debugging, worth it. Drop a comment if you want to discuss more .. #GitHubActions #DevSecOps #OpenSource #Python #SupplyChainSecurity #Scipy #Python #CI/CD
To view or add a comment, sign in
-
-
Coding agents generate code like there is no tomorrow. Soon enough, they struggle under the weight of what they created. AI writes a new helper instead of reusing an existing one. Old functions stay around because tests still call them, even though production does not. The codebase grows, but the agent's ability to reason about it does not. On bigger projects, especially ones that have been heavily vibe-coded, this turns into chaos. The problem is not just messy code. It is slower reviews, weaker trust in the codebase, and agents that get less reliable as the surface area grows. We have put a lot of energy into making code generation faster. I think the next thing to get right is safe code removal. There is a reason senior engineers get excited about deleting code. It is a bit like never throwing away clothes you no longer wear. It seems fine at first. Then one day, you have five versions of everything, and finding what you actually need means digging through closets you forgot existed. I built a Claude Code skill to help with this. It gives Claude a methodology for dead code removal: classify what you are looking at, verify the cases static tools miss, and avoid drifting into refactor territory while you are in there. It is tuned for Python and TypeScript, but should be easy to adapt. Clone it, fork it, open a PR if you improve it. https://lnkd.in/ds5AcC5U #CodingAgents #CodeQuality
To view or add a comment, sign in
-
My relationship with Asyncio is complicated! 💔 I told Python I wanted to move faster, so I switched to aiohttp. I thought we were on the same page. I was wrong! The Drama: SSL is fancy: aiohttp treats SSL like Rooh Afza sherbet. You can't just hand it the jar (the path); you have to pour it into a specific glass (the SSLContext). 🥤 The Generation Gap: Sync and Async functions are like different departments in a corporation. Sync functions are the "Old Guards." They sit in meetings, wait for their turn to speak, and refuse to leave the room until the task is done. Async functions are the "Zoomers." They have 15 tabs open, they’re doing 3 things at once, and they keep saying "I'll get back to you on that" (<coroutine object>). The Conflict: I tried to call my new Async logic from a Sync route. Flask looked at the coroutine and went: "What is this?! I asked for a string, and you gave me a to-do list?" The Resolution: Realized you can't invite an Async function to a Sync party and expect it to behave. You need a bridge. I upgraded my route to async def and finally learned to await the results properly. Finally, the "Old Guards" and "Zoomers" are on speaking terms! 🤝 Lesson learned: The "A" in Async stands for "Always check your imports." 🚀 #ProgrammingHumor
To view or add a comment, sign in
-
one of my favorite agent skill is /devops-pipeline with 1 slash command, you have a very good end-to-end setup to immediately bring the quality of your project to the whole new level: - Auto-detects project languages, frameworks, and existing tooling - Configures pre-commit hooks with language-appropriate tools - Creates GitHub Actions CI workflows mirroring local checks - Supports JS/TS, Python, Go, Rust, and Java ecosystems - Creates feature branch before making changes in the pre-ai era, a developer can spend several days to have this full setup > in this era, 30 minutes for a small project, include writing, testing and make sure everything work. and it is FREE, Check out many useful skills for developer at: https://lnkd.in/eXj3wMeB
To view or add a comment, sign in
-
-
Devlog Day 30 Today I revisited a question "Two Sum II" which is a very simple problem until you know the approach. The difference between Two Sum and Two Sum II is in Two Sum II the array is sorted and you have to solve the problem with O(n) TC and O(1) SC. Using two pointer approach you can solve this question. In brute force we use nested loops which loops through entire array to check if the sum of nums[i] and nums[j] equals to target. Else continue. It takes O(n2) TC and O(1) SC as we are not using any extra space for solution. In better approach we use two pointers by taking advantage of sorted order of array. We start from first and last pointer and check if the sum of them equals to target. If the sum is less we move left pointer else right. The problem in itself is not that hard but I am started analysing the pattern of such questions like if you have sorted array and want to find any element or perform any operation it is most likely targetting binary search and two pointers. Anyways later I continued my django course and today I learnt static files handling when your code is in production and even wrote a command script. Django lets you write your own command and you can access that command using python manage.py <command_name>. It really helps when you are containerizing your code and want to automate some processes like fetching static files from third party cdn and load it in locally so you dont have to request api for every reload. #DevLog #BuildInPublic #DSA #NeetCode #Stack #LearningInPublic #IndieHacker #WebDevelopment #Django #Coding #Development #Explore
To view or add a comment, sign in
-
Most beginner backend projects die in refactoring. Here's the structure I use to prevent that. When I built my Task Manager CLI, I learned this the hard way — a monolithic file that worked until it very much didn't. After refactoring, here's the structure I now start with: Before writing a single line: → Define your data model first → Identify all operations (CRUD) you'll need → Map inputs, outputs, and error states While building: → One module per concern (routes, models, utils, exceptions) → Validate inputs at the boundary — not deep inside logic → Handle errors explicitly — no silent failures Before shipping: → Test the unhappy paths, not just the happy ones → Read your own code like a stranger would This approach reduced my debugging effort by 40% on a real project. It works at any scale — from a CLI tool to a FastAPI service. What's the first thing you do when starting a new backend project? #BackendDevelopment #Python #FastAPI #SoftwareEngineering #CodingTips
To view or add a comment, sign in
-
Developers are flocking to luongnv89/claude-howto, a visual guide to Claude Code that's making fast-moving AI workflows easier to steer and reuse in real projects. This project is more than just a tutorial – it's a practical solution to the complexity of LLM and agent workflows. By providing a clear learning path and example-driven templates, Claude How To is helping teams overcome the common pitfalls of mastering Claude Code. At its core, Claude How To is a collection of 10 tutorial modules covering every Claude Code feature, from slash commands to custom agent teams. This comprehensive approach is a breath of fresh air in a landscape where most resources leave developers scratching their heads. By focusing on the practical application of Claude Code, this project is changing the way developers work with LLM and agent workflows. Key benefits of Claude How To include: - A clear learning path that helps developers master Claude Code features - Example-driven templates that bring immediate value to real projects - A comprehensive approach that covers every aspect of Claude Code - Built with Python, making it accessible to a wide range of developers The traction makes sense: a repository sitting at #3 with around 27,548 new stars is usually solving a problem people can feel immediately. With its recent commits and active development, it's clear that Claude How To is here to stay. Repo: https://lnkd.in/gV8nN-6t #GitHub #OpenSource #GitHubTrending #LinkedInForDevelopers #Python #ClaudeHowto #ClaudeCode #Guide
To view or add a comment, sign in
-
🚀 A Major Update is Coming to CodeAlive (Live in 3–4 Days!) I honestly started CodeAlive as a small platform with a simple goal in mind — to let my code snippets live over the internet with support for custom sharable links. But seeing how far it has come now, evolving into a platform with so many useful and smart features for everyone, has been incredibly exciting. 🌐 CodeAlive – https://lnkd.in/gnthhf_b 👉 Also, you can click "View My Website" on my profile to visit the platform. What’s Coming Next ⏭️ CodeAlive is soon introducing: **Multi-Language Detection & Highlighting in a Single Code File** Problem: Almost every code-sharing platforms and online editors are built around one assumption: 1 File = 1 Language But real-world development is rarely that simple. Developers often share: ✅ Frontend + Backend snippets together ✅ Embedded scripts/styles ✅ Configurations with code ✅ Multi-language examples in one paste And when platforms force a single language highlight, readability suffers. With This New Update, CodeAlive Will Support ✅ Detecting multiple languages within one pasted code file ✅ Highlighting different sections based on actual context/language ✅ Making mixed-language snippets cleaner, smarter, and easier to read This has been one of the most exciting features to work on so far, and I can’t wait to share the full implementation details once it officially goes live. 📅 Expected Release: 3–4 Days Stay tuned 👀 More technical insights coming soon... #CodeAlive #BuildInPublic #Programming #SoftwareDevelopment #DeveloperTools #WebDevelopment #Python #JavaScript #StartupJourney
To view or add a comment, sign in
-
-
✅ Before you push your FastAPI project to GitHub, here are 4 habits that will save you from problems down the line. 1️⃣ Always activate your virtual environment before working It takes two seconds. Skipping it causes dependency chaos that takes two hours to fix. 2️⃣ Use deactivate when you are done A small but clean habit. Just type deactivate in your terminal to exit the environment. 3️⃣ Keep your .gitignore updated 🙅 At a minimum, exclude: - Your virtual environment folder - .env files with secrets - __pycache__ directories 4️⃣ Document as you build 📝 A good README is not just for open source projects. Even for personal or team projects, it is the difference between returning to your code after two months and being completely lost. 💡 The developers who build clean, well-documented projects are the ones others actually want to collaborate with. Start small. Document your setup steps. Add a requirements.txt. Write a README. These habits compound over time. 📈 What is one project setup habit that has made the biggest difference for you? Drop it in the comments. 👇 #SoftwareDevelopment #Python #CleanCode #DeveloperTips #FastAPI
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development