<?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>Forem: Filip Galic</title>
    <description>The latest articles on Forem by Filip Galic (@filip_galic_ea8cda420d800).</description>
    <link>https://forem.com/filip_galic_ea8cda420d800</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3702756%2F93396c6e-4830-42e2-851b-32da912473ce.jpg</url>
      <title>Forem: Filip Galic</title>
      <link>https://forem.com/filip_galic_ea8cda420d800</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/filip_galic_ea8cda420d800"/>
    <language>en</language>
    <item>
      <title>I Built a GitHub Action That Uses AI to Explain Why Your CI Failed</title>
      <dc:creator>Filip Galic</dc:creator>
      <pubDate>Fri, 09 Jan 2026 15:00:46 +0000</pubDate>
      <link>https://forem.com/filip_galic_ea8cda420d800/i-built-a-github-action-that-uses-ai-to-explain-why-your-ci-failed-1ln</link>
      <guid>https://forem.com/filip_galic_ea8cda420d800/i-built-a-github-action-that-uses-ai-to-explain-why-your-ci-failed-1ln</guid>
      <description>&lt;p&gt;We've all been there — your CI pipeline fails, you click through to the logs, and you're greeted with 2,000 lines of output. Somewhere in there is the actual error. Good luck finding it.&lt;/p&gt;

&lt;p&gt;I got tired of scrolling, so I built &lt;strong&gt;&lt;a href="https://github.com/galion96/ci-failure-sumarizer" rel="noopener noreferrer"&gt;CI Failure Summarizer&lt;/a&gt;&lt;/strong&gt; — a GitHub Action that uses Claude AI to analyze your failed CI logs and sends you a human-readable summary on Slack.&lt;/p&gt;

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

&lt;p&gt;I used &lt;a href="https://claude.com/claude-code" rel="noopener noreferrer"&gt;Claude Code&lt;/a&gt; (Anthropic's CLI tool) to build the entire thing in one session. Went from idea to working GitHub Action in about an hour — including the DM feature I added halfway through because I thought "wouldn't it be cool if it messaged the person who broke the build directly?"&lt;/p&gt;

&lt;p&gt;Claude Code handled everything: the GitHub Actions setup, Slack API integration, log parsing, and even wrote the README. Pretty wild experience honestly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;When your workflow fails:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetches the logs from the failed job&lt;/li&gt;
&lt;li&gt;Sends them to Claude for analysis&lt;/li&gt;
&lt;li&gt;Posts a summary to Slack with:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Root cause&lt;/strong&gt; — what actually broke&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The error&lt;/strong&gt; — the specific message&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Suggested fix&lt;/strong&gt; — actionable next step&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Link&lt;/strong&gt; to the full logs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Cool Part: DM the Person Who Broke the Build
&lt;/h2&gt;

&lt;p&gt;Instead of posting to a channel, you can configure it to &lt;strong&gt;DM the committer directly&lt;/strong&gt;. It looks up their GitHub email in Slack and sends them a private message.&lt;/p&gt;

&lt;p&gt;No more "@channel who broke the build?" — the person responsible gets notified instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Output
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CI Failed: Build and Test

Repository: your-org/your-repo
Branch: feature/new-feature  
Commit: abc1234
Failed Jobs: test

---

1. **Root Cause**: Test assertion failed due to incorrect mock data
2. **Error**: Expected 200 but received 404 in api.test.js:42
3. **Suggested Fix**: Update the mock endpoint URL to match the new API route
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Setup (2 Minutes)
&lt;/h2&gt;

&lt;p&gt;Add this to your workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;notify-on-failure&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
  &lt;span class="na"&gt;needs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;if&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;failure()&lt;/span&gt;
  &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;galion96/ci-failure-sumarizer@v1&lt;/span&gt;
      &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;anthropic_api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.ANTHROPIC_API_KEY }}&lt;/span&gt;
        &lt;span class="na"&gt;slack_bot_token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.SLACK_BOT_TOKEN }}&lt;/span&gt;
        &lt;span class="na"&gt;notification_mode&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;dm&lt;/span&gt;  &lt;span class="c1"&gt;# or 'channel' for webhook&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cost
&lt;/h2&gt;

&lt;p&gt;Using Claude Sonnet: ~$0.01 per failure. If your CI fails 100 times a month, that's $1.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt;: &lt;a href="https://github.com/galion96/ci-failure-sumarizer" rel="noopener noreferrer"&gt;https://github.com/galion96/ci-failure-sumarizer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup Guide&lt;/strong&gt;: Check the README for full instructions&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;What features would you want to see added? Drop a comment!&lt;/p&gt;

</description>
      <category>github</category>
      <category>devops</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
