<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>rbstp.dev</title>
    <link>https://rbstp.dev</link>
    <description>There and Back Again: A DevOps Engineer's Journey Through AI and Infrastructure</description>
    <language>en-us</language>
    <lastBuildDate>Mon, 06 Apr 2026 14:58:59 GMT</lastBuildDate>
    <pubDate>Mon, 03 Nov 2025 03:05:02 GMT</pubDate>
    <ttl>60</ttl>
    <atom:link href="https://rbstp.dev/feed.xml" rel="self" type="application/rss+xml"/>
    <generator>gist-blog-generator</generator>
    <image>
      <url>https://rbstp.dev/favicon.png</url>
      <title>rbstp.dev</title>
      <link>https://rbstp.dev</link>
      <width>128</width>
      <height>128</height>
    </image>
    <item>
      <title><![CDATA[How a Developer Uses Claude Code Effectively]]></title>
      <link>https://rbstp.dev/posts/0dcd257993e01fe322ebfac60ada9851.html</link>
      <guid>https://rbstp.dev/posts/0dcd257993e01fe322ebfac60ada9851.html</guid>
      <pubDate>Mon, 03 Nov 2025 03:05:02 GMT</pubDate>
      <description><![CDATA[<p><a href="https://blog.sshh.io/p/how-i-use-every-claude-code-feature">Read the full article on sshh.io</a></p>
<p>A breakdown of how one developer integrates Claude Code into their daily engineering workflow.</p>
<h2 id="core-setup-the-claudemd-file">Core Setup: The `CLAUDE.md` File</h2><p>The <code>CLAUDE.md</code> file acts as the repo’s operating manual for the agent. It defines the main tools, APIs, and conventions the team uses. Keep it concise and reference long documentation by link rather than embedding large sections. The goal is clarity, not verbosity.</p>
<h2 id="managing-context-and-sessions">Managing Context and Sessions</h2><p>Use <code>/context</code> to track memory size, and reset with <code>/clear + /catchup</code> to refresh the workspace after file changes. For larger projects, save progress to a <code>.md</code> file before clearing so you can easily resume later. This balance keeps the agent aware but prevents context overload.</p>
<h2 id="custom-slash-commands">Custom Slash Commands</h2><p>Commands like <code>/catchup</code> or <code>/pr</code> streamline recurring workflows. Simplicity is key—if you need a long list of commands, you’re probably adding friction rather than speed.</p>
<h2 id="subagents-and-collaboration">Subagents and Collaboration</h2><p>Instead of relying on multiple rigid subagents, it’s often better to let the main agent manage context and spawn lightweight clones when needed. This keeps workflows flexible and reduces coordination overhead.</p>
<h2 id="hooks-for-validation">Hooks for Validation</h2><p>Hooks enforce consistency and prevent bad commits. Two types are common:  </p>
<ul>
<li><strong>Blocking hooks</strong> stop actions like <code>git commit</code> if tests fail.  </li>
<li><strong>Hint hooks</strong> just log or suggest improvements.<br>Run blocking hooks at commit time, not during editing, to keep feedback useful but non-disruptive.</li>
</ul>
<h2 id="skills-and-mcps">Skills and MCPs</h2><p>“Skills” formalize scripts and CLIs the agent can call directly. MCPs (Model Context Protocol) are best used as focused data gateways, exposing a few powerful entry points—like raw data or controlled execution—rather than huge APIs.</p>
<h2 id="integrations-and-configuration">Integrations and Configuration</h2><p>The Claude Code SDK works for automation and prototyping, while the GitHub Action plugin brings the agent into CI pipelines for PR automation and logging. Common <code>settings.json</code> options include proxy setup, timeout controls, and shared enterprise keys.</p>
<h2 id="takeaway">Takeaway</h2><p>Treat Claude Code like a teammate who follows your engineering principles: document its tools clearly, manage context deliberately, and build around stable, auditable workflows.</p>
]]></description>
      <category>ai</category>
      <category>claudecode</category>
      <category>summary</category>
    </item>
    <item>
      <title><![CDATA[How to Make Your LLM Not Average]]></title>
      <link>https://rbstp.dev/posts/da2bd8618efbd34741105931e15bf400.html</link>
      <guid>https://rbstp.dev/posts/da2bd8618efbd34741105931e15bf400.html</guid>
      <pubDate>Mon, 20 Oct 2025 11:33:41 GMT</pubDate>
      <description><![CDATA[<p>To make a language model less predictable and more insightful, apply the following strategies:</p>
<ul>
<li><p><strong>Use a negative style guide</strong><br>Clearly state what you <em>don’t</em> want the model to do.</p>
</li>
<li><p><strong>Force divergence in choice</strong><br>Push the model to break away from default phrasing or reasoning patterns.</p>
</li>
<li><p><strong>Avoid normal patterns</strong><br>Prevent it from falling into habits of:</p>
<ul>
<li>equivocation (vague hedging)</li>
<li>clichés</li>
<li>templated responses</li>
</ul>
</li>
<li><p><strong>Make the model self-aware</strong><br>Instruct it to identify and critique its own templates or stylistic patterns, then alter them.</p>
</li>
<li><p><strong>Encourage self-critique</strong><br>After an initial output, ask it to:</p>
<ul>
<li>review and critique its own response</li>
<li>generate a second, improved version</li>
</ul>
</li>
<li><p><strong>Switch models for perspective</strong><br>Use multiple models to critique and refine outputs.<br>Different models excel at different types of reasoning.</p>
</li>
<li><p><strong>Challenge consensus</strong><br>Provide examples that go against the norm and explain <em>why</em> the usual consensus is flawed.</p>
</li>
</ul>
<p><strong>Source:</strong><br><em>The AI Daily Brief: Artificial Intelligence News and Analysis — “5 Prompting Tricks to Make Your AI Less Average,” Oct 19, 2025</em><br><a href="https://podcasts.apple.com/ca/podcast/the-ai-daily-brief-artificial-intelligence-news/id1680633614?i=1000732563655&r=1161">Apple Podcasts link</a></p>
]]></description>
      <category>ai</category>
      <category>howto</category>
      <category>quote</category>
    </item>
    <item>
      <title><![CDATA[Introducing Claude Skills]]></title>
      <link>https://rbstp.dev/posts/a7cec0a836c0b3bf62b22081c5a8f620.html</link>
      <guid>https://rbstp.dev/posts/a7cec0a836c0b3bf62b22081c5a8f620.html</guid>
      <pubDate>Fri, 17 Oct 2025 02:34:01 GMT</pubDate>
      <description><![CDATA[<h2 id="overview">Overview</h2><blockquote>
<p>At the start of a session Claude’s various harnesses can scan all available skill files and read a short explanation for each one from the frontmatter YAML in the Markdown file. This is very token efficient: each skill only takes up a few dozen extra tokens, with the full details only loaded in should the user request a task that the skill can help solve.</p>
</blockquote>
<blockquote>
<p>Claude Code is, with hindsight, poorly named. It’s not purely a coding tool: it’s a tool for general computer automation. Anything you can achieve by typing commands into a computer is something that can now be automated by Claude Code. It’s best described as a general agent. Skills make this a whole lot more obvious and explicit.</p>
</blockquote>
<h2 id="mcp">MCP</h2><blockquote>
<p>Over time the limitations of MCP have started to emerge. The most significant is in terms of token usage: GitHub’s official MCP on its own famously consumes tens of thousands of tokens of context, and once you’ve added a few more to that there’s precious little space left for the LLM to actually do useful work.</p>
<p>My own interest in MCPs has waned ever since I started taking coding agents seriously. Almost everything I might achieve with an MCP can be handled by a CLI tool instead. LLMs know how to call cli-tool --help, which means you don’t have to spend many tokens describing how to use them—the model can figure it out later when it needs to.</p>
<p>Skills have exactly the same advantage, only now I don’t even need to implement a new CLI tool. I can drop a Markdown file in describing how to do a task instead, adding extra scripts only if they’ll help make things more reliable or efficient.</p>
</blockquote>
<p>Source: <a href="https://simonwillison.net/2025/Oct/16/claude-skills/">Claude Skills are awesome, maybe a bigger deal than MCP</a></p>
<p>Additional reading:</p>
<ul>
<li><a href="https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills">Equipping agents for the real world with Agent Skills</a></li>
<li><a href="https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview">Agent Skills</a></li>
<li><a href="https://github.com/anthropics/claude-cookbooks/tree/main/skills">Claude Skills Cookbook</a></li>
</ul>
]]></description>
      <category>claude</category>
      <category>quote</category>
      <category>skills</category>
    </item>
    <item>
      <title><![CDATA[Agent Package Manager (APM) in action]]></title>
      <link>https://rbstp.dev/posts/3be64af71fd43cf2161304de111f75f2.html</link>
      <guid>https://rbstp.dev/posts/3be64af71fd43cf2161304de111f75f2.html</guid>
      <pubDate>Mon, 13 Oct 2025 16:59:13 GMT</pubDate>
      <description><![CDATA[<blockquote>
<ol>
<li>Agent primitives are software: Your .prompt.md and .instructions.md files represent executable natural language programs that deserve professional tooling infrastructure.</li>
<li>Runtime diversity enables scale: Agent CLI runtimes provide the execution environments that bridge development to production.</li>
<li>Package management is critical: APM provides the npm-equivalent layer that makes agent primitives truly portable and shareable.</li>
<li>Production ready today: This tooling stack enables automated AI workflows in CI/CD pipelines with enterprise-grade reliability.</li>
<li>Ecosystem growth pattern: Package management infrastructure creates the foundation for thriving ecosystems of shared workflows, tools, and community libraries</li>
</ol>
</blockquote>
<p><a href="https://github.blog/ai-and-ml/github-copilot/how-to-build-reliable-ai-workflows-with-agentic-primitives-and-context-engineering/">How to build reliable AI workflows with agentic primitives and context engineering</a></p>
]]></description>
      <category>apm</category>
      <category>github</category>
      <category>quote</category>
    </item>
    <item>
      <title><![CDATA[Talk, Tag, Build: How Three Prompts Automate Product Development]]></title>
      <link>https://rbstp.dev/posts/9fd7698bee0c925a3b0b297ff93dcd81.html</link>
      <guid>https://rbstp.dev/posts/9fd7698bee0c925a3b0b297ff93dcd81.html</guid>
      <pubDate>Mon, 13 Oct 2025 02:20:05 GMT</pubDate>
      <description><![CDATA[<h2 id="setup">Setup</h2><blockquote>
<p>it&#39;s three markdown files, and it&#39;s basically three prompts. What I figured out is, okay, if you want to build something, whether it&#39;s the whole app or just a feature of the app, you of course have to create a PRD, a product requirement doc, and again, it&#39;s like, duh. But a lot of people don&#39;t know this.</p>
<p>What I do is I have this file, you just tag it, and then you tag the filename, and then I now use Whisper Flow, and I&#39;m not an investor, I&#39;m not being paid to say that, but I just click the Alt key on my keyboard, and I just start blabbing about this feature and everything about it, and then I tag this file called Create PRD, and then the model goes to work, and the prompt is basically like, okay, take the user&#39;s requirements, ask them five clarifying questions, and then once you get the answer, then build out a pretty typical PRD. Yeah. Great.</p>
<p>You got a PRD. You specify a lot of things, but now what? So, then the second file is called generate tasks.</p>
<p>And so, you tag the PRD, you tag the generate task file, and you hit go on the agent. And the prompt is pretty simple. Look at this PRD, pretend that you&#39;re translating it for a junior developer.</p>
</blockquote>
<h2 id="break-it-down">Break it down.</h2><blockquote>
<p>Break it down as tasks, make every task atomic, use dot notation, put a list of the files that you think you&#39;re going to need to add at the top, and then say go. And then, there&#39;s the third one is, which is iterating the task, which is do one task at a time, ask for permissions when you don&#39;t understand things. And that process, believe it or not, most people don&#39;t do or understand or have the discipline to run.</p>
<p>But when you do, you can build big, big features pretty reliably.</p>
</blockquote>
<p>Source: <a href="https://podcasts.apple.com/ca/podcast/deployed-the-ai-product-podcast/id1767974576?i=1000727543837&r=866">Deployed: The AI Product Podcast: Real Talk on Building Coding Agents: A Conversation with Amp&#39;s Builder-in-Residence</a></p>
]]></description>
      <category>amp</category>
      <category>quote</category>
      <category>spec</category>
    </item>
    <item>
      <title><![CDATA[Quote from "The Peterman Pod: Mozilla Firefox CTO on Browser War Stories and the Path to Distinguished Engineer"]]></title>
      <link>https://rbstp.dev/posts/23f25ce32f4213a835119364e4b2b1db.html</link>
      <guid>https://rbstp.dev/posts/23f25ce32f4213a835119364e4b2b1db.html</guid>
      <pubDate>Sat, 11 Oct 2025 17:52:26 GMT</pubDate>
      <description><![CDATA[<blockquote>
<p>I think it is one of the most powerful ways to create clarity of thinking for yourself, because clarity of thinking is, in my view, one of the most important things. And you only can really get that by forcing yourself to write down your ideas. And so I suppose one pertinent or timely piece of advice is, if you care about this, do not use an LLM to produce text for YouTube.</p>
<p>Because first of all, if you&#39;re putting your name on this thing, at least today, the LLM is like, it&#39;s pretty easy to tell when somebody does that. But more importantly, you are losing the opportunity to do the thinking yourself. And that thinking that happens when you write is one of the most important types of thinking for growth.</p>
</blockquote>
<p> <a href="https://podcasts.apple.com/ca/podcast/the-peterman-pod/id1777363835?i=1000731153535">Bobby Holley</a></p>
]]></description>
      <category>quote</category>
      <category>thinking</category>
      <category>writing</category>
    </item>
    <item>
      <title><![CDATA[Shipping a Non-Trivial Feature with Agentic AI: Notes from Ghostty]]></title>
      <link>https://rbstp.dev/posts/63efc8c96c586b4a89d553f2c00c3be4.html</link>
      <guid>https://rbstp.dev/posts/63efc8c96c586b4a89d553f2c00c3be4.html</guid>
      <pubDate>Sat, 11 Oct 2025 15:53:22 GMT</pubDate>
      <description><![CDATA[<p>Mitchell Hashimoto describes how he shipped Ghostty’s unobtrusive macOS update UI using agentic AI with deliberate human oversight.  ￼</p>
<h2 id="plan-before-you-prompt">Plan before you prompt</h2><p>Define the shape of the solution first. Hashimoto chose Sparkle’s custom UI path and a titlebar accessory concept, then used an agent to prototype UI states, not to “build everything.” Humans kept control of scope and taste.  ￼</p>
<h2 id="iterate-then-de-slop">Iterate, then de-slop</h2><p>Multiple cleanup passes moved code to sane places, added documentation, and elevated state to the app level. He emphasizes owning the code and performing a final manual review before shipping.  ￼</p>
<h2 id="pivot-when-blocked-simulate-to-harden-ux">Pivot when blocked, simulate to harden UX</h2><p>When titlebar constraints fought the design, he pivoted to an in-window overlay and added simulation scenarios to exercise error and “no update” paths before wiring the backend.  ￼</p>
<p>Outcome: 16 sessions, ~$15.98 token spend, ~8 hours of focused work. Live for tip users now and slated for Ghostty 1.3.</p>
<p>Source : <a href="https://mitchellh.com/writing/non-trivial-vibing">https://mitchellh.com/writing/non-trivial-vibing</a></p>
]]></description>
      <category>ai</category>
      <category>vibe</category>
    </item>
    <item>
      <title><![CDATA[Claude Code Plugins]]></title>
      <link>https://rbstp.dev/posts/f2d6f8cc990f1d58661dd685907733c7.html</link>
      <guid>https://rbstp.dev/posts/f2d6f8cc990f1d58661dd685907733c7.html</guid>
      <pubDate>Thu, 09 Oct 2025 23:52:53 GMT</pubDate>
      <description><![CDATA[<p>After the release from Gemini Cli, Claude Code is now offerings plugins. It seems taylor made for the Enterprise or teams, to quickly share configurations between team members. Excited to try it out.</p>
<p>Source: <a href="https://www.anthropic.com/news/claude-code-plugins">Claude Code plugins</a></p>
]]></description>
      <category>anthropic</category>
      <category>claudecode</category>
      <category>plugins</category>
    </item>
    <item>
      <title><![CDATA[Integration in Slack of Claude Agent SDK]]></title>
      <link>https://rbstp.dev/posts/450f7041474e490cace7777c138ee4d2.html</link>
      <guid>https://rbstp.dev/posts/450f7041474e490cace7777c138ee4d2.html</guid>
      <pubDate>Thu, 09 Oct 2025 01:24:32 GMT</pubDate>
      <description><![CDATA[<p>The co-founder of Instagram, Mike Krieger, which is now at Anthropic, mentioned that they use the Claude Agent SDK in a automated Slack channel when there is a new incident. It is name Claude Pager and it gathers all the context of the incident and can be poked to give out infromation when needed.</p>
<p>I have been waiting to implement something similar in our stack, once we are finally off the waiting list of the Datadog MCP waitlist...</p>
<p>Source: <a href="https://podcasts.apple.com/ca/podcast/big-technology-podcast/id1522960417?i=1000730866400">Big Technology Podcast</a></p>
]]></description>
      <category>agent</category>
      <category>anthropic</category>
      <category>podcast</category>
    </item>
    <item>
      <title><![CDATA[Vibe Engineering]]></title>
      <link>https://rbstp.dev/posts/5d4fd1909abb662d7fb53703f4ffd1cd.html</link>
      <guid>https://rbstp.dev/posts/5d4fd1909abb662d7fb53703f4ffd1cd.html</guid>
      <pubDate>Tue, 07 Oct 2025 20:58:01 GMT</pubDate>
      <description><![CDATA[<p>Following the vibe research, we now get vibe engineering from <a href="https://simonwillison.net/2025/Oct/7/vibe-engineering/">Simon Willison</a>:</p>
<h2 id="definition">Definition</h2><blockquote>
<p><strong>Vibe engineering</strong> establishes a clear distinction from vibe coding. It signals that this is a different, harder and more sophisticated way of working with AI tools to build production software.</p>
</blockquote>
<h2 id="requirements">Requirements</h2><blockquote>
<p>It’s also become clear to me that LLMs actively reward existing top tier software engineering practices:</p>
<ul>
<li><strong>Automated testing.</strong> If your project has a robust, comprehensive and stable test suite agentic coding tools can fly with it. Without tests? Your agent might claim something works without having actually tested it at all, plus any new change could break an unrelated feature without you realizing it. Test-first development is particularly effective with agents that can iterate in a loop.</li>
<li><strong>Planning in advance.</strong> Sitting down to hack something together goes much better if you start with a high level plan. Working with an agent makes this even more important—you can iterate on the plan first, then hand it off to the agent to write the code.</li>
<li><strong>Comprehensive documentation.</strong> Just like human programmers, an LLM can only keep a subset of the codebase in its context at once. Being able to feed in relevant documentation lets it use APIs from other areas without reading the code first. Write good documentation first and the model may be able to build the matching implementation from that input alone.</li>
<li><strong>Good version control habits.</strong> Being able to undo mistakes and understand when and how something was changed is even more important when a coding agent might have made the changes. LLMs are also fiercely competent at Git—they can navigate the history themselves to track down the origin of bugs, and they’re better than most developers at using git bisect. Use that to your advantage.</li>
<li>Having <strong>effective automation</strong> in place. Continuous integration, automated formatting and linting, continuous deployment to a preview environment—all things that agentic coding tools can benefit from too. LLMs make writing quick automation scripts easier as well, which can help them then repeat tasks accurately and consistently next time.</li>
<li>A <strong>culture of code review.</strong> This one explains itself. If you’re fast and productive at code review you’re going to have a much better time working with LLMs than if you’d rather write code yourself than review the same thing written by someone (or something) else.</li>
<li>A <strong>very weird form of management.</strong> Getting good results out of a coding agent feels uncomfortably close to getting good results out of a human collaborator. You need to provide clear instructions, ensure they have the necessary context and provide actionable feedback on what they produce. It’s a lot easier than working with actual people because you don’t have to worry about offending or discouraging them—but any existing management experience you have will prove surprisingly useful.</li>
<li>Really good <strong>manual QA (quality assurance).</strong> Beyond automated tests, you need to be really good at manually testing software, including predicting and digging into edge-cases.</li>
<li>Strong <strong>research skills.</strong> There are dozens of ways to solve any given coding problem. Figuring out the best options and proving an approach has always been important, and remains a blocker on unleashing an agent to write the actual code.</li>
<li>The ability to <strong>ship to a preview environment.</strong> If an agent builds a feature, having a way to safely preview that feature (without deploying it straight to production) makes reviews much more productive and greatly reduces the risk of shipping something broken.</li>
<li>An instinct for <strong>what can be outsourced</strong> to AI and what you need to manually handle yourself. This is constantly evolving as the models and tools become more effective. A big part of working effectively with LLMs is maintaining a strong intuition for when they can best be applied.</li>
<li>An updated <strong>sense of estimation.</strong> Estimating how long a project will take has always been one of the hardest but most important parts of being a senior engineer, especially in organizations where budget and strategy decisions are made based on those estimates. AI-assisted coding makes this even harder—things that used to take a long time are much faster, but estimations now depend on new factors which we’re all still trying to figure out.</li>
</ul>
</blockquote>
]]></description>
      <category>ai</category>
      <category>quote</category>
      <category>vibe</category>
    </item>
    <item>
      <title><![CDATA[Vibe Research]]></title>
      <link>https://rbstp.dev/posts/e9470cec6072c40b6bd2ee0b1ae6619f.html</link>
      <guid>https://rbstp.dev/posts/e9470cec6072c40b6bd2ee0b1ae6619f.html</guid>
      <pubDate>Tue, 07 Oct 2025 11:42:54 GMT</pubDate>
      <description><![CDATA[<blockquote>
<p>“vibe research”. Like “vibe coding”, it’s performing a difficult technical task by relying on the model. I have a broad intuitive sense of what approaches are being tried, but I definitely don’t have a deep enough understanding to do this research unassisted. A real AI researcher would get a lot more out of the tool.</p>
</blockquote>
<blockquote>
<p>The basic loop of doing AI research with Codex (at least as an enthusiastic amateur) looks something like this:</p>
<ol>
<li>Codex makes a change to the training script and does three or four runs (this takes ~20 minutes overall)</li>
<li>Based on the results, Codex suggests two or three things that you could try next</li>
<li>I pick one of them (or very occasionally suggest my own idea) and return to (1).</li>
</ol>
</blockquote>
<p>Source: <a href="https://www.seangoedecke.com/ai-research-with-codex/">https://www.seangoedecke.com/ai-research-with-codex/</a></p>
]]></description>
      <category>ai</category>
      <category>quote</category>
      <category>vibe</category>
    </item>
    <item>
      <title><![CDATA[Codex Goes GA: New Features]]></title>
      <link>https://rbstp.dev/posts/bed9e6dda01ee60b1c6aa83ca422a4b2.html</link>
      <guid>https://rbstp.dev/posts/bed9e6dda01ee60b1c6aa83ca422a4b2.html</guid>
      <pubDate>Tue, 07 Oct 2025 01:50:05 GMT</pubDate>
      <description><![CDATA[<p>OpenAI just announced that <a href="https://openai.com/index/codex-now-generally-available/">Codex is now generally available</a>, and they&#39;re shipping some really practical features that make it way more useful for engineering teams.</p>
<h2 id="whats-new">What's New</h2><p>The big additions are a Slack integration, the Codex SDK, and better admin tools. But honestly, the SDK and GitHub Actions integration are what really caught my attention.</p>
<h2 id="slack-integration-delegate-like-a-coworker">Slack Integration: Delegate Like a Coworker</h2><p>You can now tag Codex directly in Slack channels or threads to kick off tasks. Just treat it like another team member. Need someone to investigate a bug or refactor something? Drop it in Slack and let Codex handle it in the background.</p>
<p>Check out <a href="https://youtu.be/hS1YqcewH0c?t=2098">the demo from DevDay</a> to see how smooth this workflow is.</p>
<h2 id="the-sdk-embed-codex-anywhere">The SDK: Embed Codex Anywhere</h2><p>This is where it gets interesting. The Codex SDK lets you embed the same agent into your own tools and workflows with just a few lines of TypeScript code.</p>
<pre><code class="language-typescript">import { Codex } from &quot;@openai/codex-sdk&quot;;

const codex = new Codex();
const thread = codex.startThread();
const result = await thread.run(
  &quot;Make a plan to diagnose and fix the CI failures&quot;
);
console.log(result);
</code></pre>
<p>You can continue on the same thread or resume past threads. It handles context management automatically, and outputs are structured so you can parse agent responses easily.</p>
<h2 id="github-actions-auto-fix-your-ci">GitHub Actions: Auto-Fix Your CI</h2><p>Here&#39;s the really cool part. You can now add Codex directly into your CI pipeline to automatically fix failing tests. When your CI fails, Codex spins up, diagnoses the issue, applies a minimal fix, and opens a PR for review.</p>
<p>The setup is straightforward. Add this to <code>.github/workflows/codex-autofix.yml</code>:</p>
<pre><code class="language-yaml">name: Codex Auto-Fix on Failure

on:
  workflow_run:
    workflows: [&quot;CI&quot;]
    types: [completed]

permissions:
  contents: write
  pull-requests: write

jobs:
  auto-fix:
    if: ${{ github.event.workflow_run.conclusion == &#39;failure&#39; }}
    runs-on: ubuntu-latest
    
    steps:
      - uses: actions/checkout@v4
      - uses: openai/codex-action@main
        with:
          openai_api_key: ${{ secrets.OPENAI_API_KEY }}
          prompt: &gt;-
            Read the repo, run tests, identify minimal fix, 
            implement only that change. Keep it surgical.
</code></pre>
<p>That&#39;s it. Codex watches for failures, fixes them, and submits a PR. You review and merge like any other contribution.</p>
<p>The full setup guide is <a href="https://developers.openai.com/codex/autofix-ci#step-1-add-the-github-action-to-your-ci-pipeline">here on the OpenAI docs</a>.</p>
<h2 id="bottom-line">Bottom Line</h2><p>The GA release makes Codex feel less like an experiment and more like a production tool. The SDK and GitHub Actions integration are the standout features here. Being able to automate CI fixes and embed Codex into your own workflows opens up a lot of possibilities.</p>
]]></description>
      <category>ai</category>
      <category>openai</category>
      <category>sdk</category>
    </item>
    <item>
      <title><![CDATA[OpenAI's AgentKit]]></title>
      <link>https://rbstp.dev/posts/48eea91c430ddf7958d274891d1943fc.html</link>
      <guid>https://rbstp.dev/posts/48eea91c430ddf7958d274891d1943fc.html</guid>
      <pubDate>Tue, 07 Oct 2025 01:32:38 GMT</pubDate>
      <description><![CDATA[<p>OpenAI just dropped <a href="https://openai.com/index/introducing-agentkit/">AgentKit</a> at their DevDay event, and it&#39;s basically their answer to making AI agent development way less painful. Think of it as Zapier, but specifically designed for building and orchestrating AI agents.</p>
<h2 id="what-is-agentkit">What Is AgentKit?</h2><p>Until now, building AI agents meant juggling a bunch of different tools. Custom orchestration, manual evaluation pipelines, connector setup, prompt tuning, and weeks of frontend work. AgentKit bundles all of that into one unified platform.</p>
<p>The toolkit has four main pieces:</p>
<ul>
<li><strong>Agent Builder</strong> This is the visual canvas where you drag and drop nodes to create multi-agent workflows. You get versioning, guardrails, and the ability to preview runs right in the interface. No more writing complex orchestration code.</li>
<li><strong>Connector Registry</strong> Basically a central admin panel where you manage how your agents connect to internal tools and third-party systems. Keeps things secure while giving your agents access to what they need.</li>
<li><strong>ChatKit</strong> Pre-built UI components so you can embed chat-based agent experiences directly into your product. Way faster than building custom interfaces from scratch.</li>
<li><strong>Evals for Agents</strong> New evaluation tools that let you measure how well your agents are performing. You get trace grading, datasets, automated prompt optimization, and you can even test against other models like Claude or Gemini.</li>
</ul>
<h2 id="the-live-demo">The Live Demo</h2><p>During the keynote, OpenAI engineer Christina Huang <a href="https://youtu.be/hS1YqcewH0c?t=1312">built a complete AI agent workflow in under 8 minutes</a> to show how fast you can go from idea to working agent. Pretty impressive.</p>
<h2 id="why-it-matters">Why It Matters</h2><p>This is OpenAI&#39;s push to become more than just a model provider. They want to be the full platform for building agentic applications. It&#39;s a direct play against tools like Zapier&#39;s agent builders and other automation platforms.</p>
]]></description>
      <category>agent</category>
      <category>ai</category>
      <category>openai</category>
    </item>
    <item>
      <title><![CDATA[Vibe Coding Audiobook Review]]></title>
      <link>https://rbstp.dev/posts/6b4a80a7b06535327b2093d3d03ea004.html</link>
      <guid>https://rbstp.dev/posts/6b4a80a7b06535327b2093d3d03ea004.html</guid>
      <pubDate>Mon, 06 Oct 2025 02:02:38 GMT</pubDate>
      <description><![CDATA[<p><strong>Story: ⭐⭐⭐ | Narration: ⭐⭐⭐⭐⭐</strong></p>
<p>Gene Kim and Steve Yegge’s audiobook on vibe coding has excellent narration, but I’d recommend checking out <a href="https://youtube.com/@vibecodingwithsteveandgene">their YouTube channel</a> instead. Most of the book’s examples were already covered in their promotional videos, and the high-level approach makes you wonder how long the advice will stay relevant in this fast-moving space.</p>
<p>The core framework they present, the Three Developer Loops, is genuinely useful though:</p>
<h2 id="inner-loop-seconds-to-minutes">Inner Loop (Seconds to Minutes)</h2><p>This is where AI shines brightest. Get AI to write specifications and tests, use it as your “Git maestro” for quick iterations. The speed here is incredible.</p>
<h2 id="middle-loop-hours-to-days">Middle Loop (Hours to Days)</h2><p>Focus on getting code into users’ hands quickly, working with AI on real issues, and maintaining that human collaboration element. It’s about keeping your development cycle tight while staying grounded in actual user needs.</p>
<h2 id="outer-loop-weeks-to-months">Outer Loop (Weeks to Months)</h2><p>The bigger picture stuff: preventing “kitchen fires” through stress tests and automation, detecting issues with proper CI/CD pipelines, and correcting problems systematically. This is where the Prevent-Detect-Correct cycle really matters.</p>
<h2 id="other-notes">Other Notes</h2><p>Parts 3 and 4 had some solid insights, but nothing groundbreaking if you’re already working with AI tools. The kitchen analogy gets overused pretty quickly, which doesn’t help.</p>
<p>If you’re new to AI-assisted development, the YouTube series gives you the essentials without the time commitment. If you’re already familiar with these concepts, you won’t find much new here beyond the well-produced audio experience.</p>
]]></description>
      <category>ai</category>
      <category>book</category>
      <category>vibe</category>
    </item>
    <item>
      <title><![CDATA[Introduction]]></title>
      <link>https://rbstp.dev/posts/e6d4cca574a4754cddfa465a014cf905.html</link>
      <guid>https://rbstp.dev/posts/e6d4cca574a4754cddfa465a014cf905.html</guid>
      <pubDate>Sun, 05 Oct 2025 16:58:11 GMT</pubDate>
      <description><![CDATA[<p>Welcome to my vibe-coded blog, built on GitHub Gists. I&#39;ve been following Simon Willison&#39;s excellent blog for a few months, and this post in particular sparked something for me: <a href="https://simonwillison.net/2024/Dec/22/link-blog/">My approach to running a link blog</a>. A few months later, here we are.</p>
<h2 id="why">Why?</h2><p>Why not?
I&#39;m preparing for a talk at work about AI and going beyond &quot;vibe-coding&quot;. I figured I&#39;d make my notes and preparation public as part of the process.</p>
<p>This site was built for fun with a terminal-style theme; fitting, since I spend most of my time in a terminal as a DevOps engineer. I know the title &quot;DevOps engineer&quot; can be controversial, but it is what it is.</p>
<p>Comments and discussions are welcome on GitHub: <a href="https://github.com/rbstp/gist-blog">rbstp/gist-blog</a>.</p>
<h2 id="how">How?</h2><p>Since I work with Linux images all day, I decided to use Linux as my daily driver outside of work (where we use macOS).</p>
<p>My son loves dinosaurs, so I picked the <a href="https://projectbluefin.io/">Bluefin</a> distro (based on Fedora). It&#39;s been solid so far, especially the dev mode, and it was easy to get started. I used Ubuntu before, so this was a nice change and a chance to learn new things.</p>
<h2 id="whats-next">What's Next?</h2><p>A lot of reading, practice, and constant learning. I&#39;m aiming for a similar feel to Simon Willison&#39;s blog.<br>Feel free to tag along!</p>
]]></description>
      <category>ai</category>
      <category>blog</category>
      <category>vibe</category>
    </item>
  </channel>
</rss>