<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sann Sarr</title>
    <description>The latest articles on DEV Community by Sann Sarr (@ssannssarr).</description>
    <link>https://dev.to/ssannssarr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4151303%2Ff4c9290b-17ab-4c9d-849a-f5fecbf5aa92.jpg</url>
      <title>DEV Community: Sann Sarr</title>
      <link>https://dev.to/ssannssarr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ssannssarr"/>
    <language>en</language>
    <item>
      <title>Git Craft</title>
      <dc:creator>Sann Sarr</dc:creator>
      <pubDate>Thu, 15 Oct 2026 00:45:50 +0000</pubDate>
      <link>https://dev.to/ssannssarr/git-craft-1h85</link>
      <guid>https://dev.to/ssannssarr/git-craft-1h85</guid>
      <description>&lt;p&gt;This is a submission for the "Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle" (&lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;https://dev.to/challenges/hacktoberfest-week2-2026-10-12&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;Git Craft: A Little AI Assistant for Better Git Commits 🛠️&lt;/p&gt;

&lt;p&gt;Writing code is one thing. Writing a good commit message for it is another.&lt;/p&gt;

&lt;p&gt;Sometimes, after making several changes, I find myself spending more time figuring out how to describe them in a commit message than I expected. That small frustration inspired Git Craft, a Python command-line tool that uses AI to draft concise Git commit messages from your changes.&lt;/p&gt;

&lt;p&gt;Instead of switching to a browser-based AI chatbot, you can run Git Craft directly in your terminal.&lt;/p&gt;

&lt;p&gt;Here's what it does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Examines staged changes, or unstaged tracked changes when nothing is staged.&lt;/li&gt;
&lt;li&gt;Uses an Ollama model to generate a concise commit message.&lt;/li&gt;
&lt;li&gt;Includes recent commit subjects to provide additional context.&lt;/li&gt;
&lt;li&gt;Prints the suggested message so you can review it before committing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My goal is to make the everyday Git workflow a little smoother, especially for developers who prefer working in the terminal.&lt;/p&gt;

&lt;p&gt;Who could pay for it?&lt;/p&gt;

&lt;p&gt;Git Craft is currently an open-source project, not a paid product. Its potential audience includes individual developers, students, and small development teams who want a more convenient commit-message workflow.&lt;/p&gt;

&lt;p&gt;A future paid offering could focus on team-specific commit conventions, shared configurations, or integrations. These are possible future directions, not existing features.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;GitHub repository: "ssannssarr/git-craft" (&lt;a href="https://github.com/ssannssarr/git-craft" rel="noopener noreferrer"&gt;https://github.com/ssannssarr/git-craft&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Git Craft is a CLI tool, so a short terminal recording showing a staged change and its generated commit message would make a great demo.&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;Explore the source code and contribute:&lt;/p&gt;

&lt;p&gt;"GitHub: ssannssarr/git-craft" (&lt;a href="https://github.com/ssannssarr/git-craft" rel="noopener noreferrer"&gt;https://github.com/ssannssarr/git-craft&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Built with Python and distributed under the MIT License.&lt;/p&gt;

&lt;p&gt;How I Built It&lt;/p&gt;

&lt;p&gt;I built Git Craft as a Python CLI utility around Ollama's local model-serving interface.&lt;/p&gt;

&lt;p&gt;The basic workflow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Git Craft inspects the current repository's changes.&lt;/li&gt;
&lt;li&gt;It gathers the relevant diff and recent commit subjects for context.&lt;/li&gt;
&lt;li&gt;It sends that information to a model through an OpenAI-compatible API endpoint.&lt;/li&gt;
&lt;li&gt;The model drafts a commit message, which Git Craft prints for me to review.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The default configuration uses a local Ollama server and the "llama3" model identifier. The base URL and model can also be configured, allowing the tool to adapt to different compatible endpoints.&lt;/p&gt;

&lt;p&gt;I wanted to explore how open-source AI could become a practical part of an everyday developer workflow, rather than just another chatbot interface.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;/p&gt;

&lt;p&gt;For a tool like Git Craft, open innovation matters because developers should have choices about how their AI tools work.&lt;/p&gt;

&lt;p&gt;Using Ollama makes it possible to run a compatible model locally instead of depending entirely on a hosted AI API. This gives developers more control over their model choice, deployment, and where inference happens.&lt;/p&gt;

&lt;p&gt;Open-source development also lets other developers inspect the implementation, adapt the workflow, suggest improvements, and contribute features that fit their own needs.&lt;/p&gt;

&lt;p&gt;Git Craft is a small project, but it reflects something I value about open innovation:&lt;/p&gt;

&lt;p&gt;AI becomes more useful when developers can experiment with it, understand it, and build on top of it.&lt;/p&gt;

&lt;p&gt;My Agent Session&lt;/p&gt;

&lt;p&gt;I haven't included an agent-session recording in this submission. If I capture a session using DevRelay, I'll add it here.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;/p&gt;

&lt;p&gt;Git Craft is a Python CLI tool that uses Ollama for AI-powered commit-message generation. I'll select only the official prize categories for which the project meets the stated requirements.&lt;/p&gt;

&lt;p&gt;I don't want to claim eligibility for partner-specific awards without implementing the required integrations or confirming that the project meets their criteria.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
