<?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: Grigor Musoyan</title>
    <description>The latest articles on DEV Community by Grigor Musoyan (@musoyangrigor).</description>
    <link>https://dev.to/musoyangrigor</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%2F4073671%2Fceeb09a0-35cb-4313-a57c-319838279794.png</url>
      <title>DEV Community: Grigor Musoyan</title>
      <link>https://dev.to/musoyangrigor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/musoyangrigor"/>
    <language>en</language>
    <item>
      <title>I built GitX to turn messy AI-generated changes into clean Git history</title>
      <dc:creator>Grigor Musoyan</dc:creator>
      <pubDate>Tue, 11 Aug 2026 19:46:10 +0000</pubDate>
      <link>https://dev.to/musoyangrigor/i-built-gitx-to-turn-messy-ai-generated-changes-into-clean-git-history-1408</link>
      <guid>https://dev.to/musoyangrigor/i-built-gitx-to-turn-messy-ai-generated-changes-into-clean-git-history-1408</guid>
      <description>&lt;p&gt;AI coding agents are great at changing code.&lt;/p&gt;

&lt;p&gt;But after a long session with Codex, Claude Code, Cursor, or another coding agent, I often end up with something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;17 changed files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Some files belong to a feature.&lt;/p&gt;

&lt;p&gt;Some belong to a bug fix.&lt;/p&gt;

&lt;p&gt;Some are tests.&lt;/p&gt;

&lt;p&gt;Some are documentation.&lt;/p&gt;

&lt;p&gt;Putting everything into one commit works, but it usually creates messy Git history.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;GitX&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;GitX is a portable Git workflow skill for AI coding agents. It inspects your working tree, understands the changes, and helps organize them into clean, logical commits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a commit plan
&lt;/h2&gt;

&lt;p&gt;One of the commands I use most is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx plan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It analyzes the current changes and proposes how they should be grouped without creating any commits.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3 logical commits

feat(auth): add token refresh support

fix(api): handle expired authentication sessions

test(auth): cover refresh token behavior
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lets me review the plan before GitX changes anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create the commits
&lt;/h2&gt;

&lt;p&gt;If the plan looks good:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitX creates Conventional Commit messages based on the actual changes.&lt;/p&gt;

&lt;p&gt;If the working tree contains multiple logical groups, GitX can separate them instead of automatically putting unrelated changes into one large commit.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitX does more than commit messages
&lt;/h2&gt;

&lt;p&gt;I didn't want GitX to be only another commit-message generator.&lt;/p&gt;

&lt;p&gt;It can also help with the rest of the Git workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx status
gitx tree
gitx plan
gitx check

gitx branch
gitx pull
gitx push

gitx pr

gitx issue &amp;lt;description&amp;gt;
gitx issue &amp;lt;number&amp;gt;

gitx resolve
gitx amend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;/p&gt;

&lt;h3&gt;
  
  
  Run checks before committing
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitX detects relevant project checks such as tests or linting and runs them before creating the commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a branch
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitX can infer an appropriate branch name and prefix such as &lt;code&gt;feat/&lt;/code&gt;, &lt;code&gt;fix/&lt;/code&gt;, &lt;code&gt;docs/&lt;/code&gt;, or &lt;code&gt;refactor/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a GitHub pull request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx pr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It inspects the commits and changes, pushes the branch when needed, and creates a pull request with a generated title and summary.&lt;/p&gt;

&lt;h3&gt;
  
  
  Work with GitHub issues
&lt;/h3&gt;

&lt;p&gt;Create an issue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx issue Login fails after token expiry
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or ask your coding agent to work on an existing issue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx issue 123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Resolve conflicts
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx resolve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitX can inspect an in-progress merge or rebase conflict, understand both sides of the change, resolve it, and run the relevant checks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Safety matters
&lt;/h2&gt;

&lt;p&gt;Git automation can become dangerous quickly, so GitX is intentionally conservative.&lt;/p&gt;

&lt;p&gt;It avoids force-pushing, doesn't push during a normal commit workflow, protects existing branches and working-tree changes, and warns before including files that may contain credentials, secrets, logs, or build artifacts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install GitX
&lt;/h2&gt;

&lt;p&gt;GitX follows the portable Agent Skills &lt;code&gt;SKILL.md&lt;/code&gt; format and is designed for compatible coding agents such as Codex, Claude Code, Cursor, and other Agent Skills-compatible tools.&lt;/p&gt;

&lt;p&gt;Install it with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx skills add musoyangrigor/gitx-skill &lt;span class="nt"&gt;--skill&lt;/span&gt; gitx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gitx plan
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/musoyangrigor/gitx-skill" rel="noopener noreferrer"&gt;https://github.com/musoyangrigor/gitx-skill&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Feedback is welcome
&lt;/h2&gt;

&lt;p&gt;I'd especially like feedback from developers using AI coding agents on real projects.&lt;/p&gt;

&lt;p&gt;If you try GitX, I'm curious about one thing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does &lt;code&gt;gitx plan&lt;/code&gt; group your changes the way you would have grouped them yourself?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If it doesn't, I'd love to hear about the case so I can improve it.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>opensource</category>
      <category>git</category>
    </item>
  </channel>
</rss>
