<?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: Mehmet Can Farsak</title>
    <description>The latest articles on DEV Community by Mehmet Can Farsak (@mehmetcanfarsak).</description>
    <link>https://dev.to/mehmetcanfarsak</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%2F1121025%2F7675a0ae-3c92-4141-910c-c906e3097968.jpeg</url>
      <title>DEV Community: Mehmet Can Farsak</title>
      <link>https://dev.to/mehmetcanfarsak</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mehmetcanfarsak"/>
    <language>en</language>
    <item>
      <title>Stop Using 'Skills' for Brainstorming. Build a Hook Instead. 🛠️</title>
      <dc:creator>Mehmet Can Farsak</dc:creator>
      <pubDate>Thu, 11 Jun 2026 20:20:00 +0000</pubDate>
      <link>https://dev.to/mehmetcanfarsak/stop-using-skills-for-brainstorming-build-a-hook-instead-3c5n</link>
      <guid>https://dev.to/mehmetcanfarsak/stop-using-skills-for-brainstorming-build-a-hook-instead-3c5n</guid>
      <description>&lt;p&gt;You know that look? The one where you ask an AI coding agent to "just brainstorm a caching strategy" and suddenly—&lt;em&gt;poof&lt;/em&gt;—it's implemented a Redis key-value store in Python anyway.&lt;/p&gt;

&lt;p&gt;It's not because you didn't explain it well enough. It's because modern instruction-tuned models are &lt;strong&gt;prioritized to act, not think&lt;/strong&gt;. They are over-trained on coding tasks and suffer from what we call "execution drift."&lt;/p&gt;

&lt;p&gt;I spent the last few months trying to stop my AI agents from building UIs before they were even ready. I tried "prompting." I tried "skills" (Markdown files that act as system prompts).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;They all fail.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As soon as the context gets too large (context compaction), the instruction gets wiped. Even if it doesn't, the model can just be talked out of it by a persuasive prompt. A skill is just &lt;em&gt;advice&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Solution: Enforce at the Infrastructure Layer
&lt;/h3&gt;

&lt;p&gt;If you can't rely on the model to follow instructions, you have to &lt;strong&gt;bypass the model entirely&lt;/strong&gt; and enforce the constraints at the hook layer.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Brainstorm-Mode&lt;/strong&gt;, a lightweight, agent-agnostic plugin architecture that blocks the actual execution of coding tools (&lt;code&gt;Edit&lt;/code&gt;, &lt;code&gt;MultiEdit&lt;/code&gt;, &lt;code&gt;NotebookEdit&lt;/code&gt;) &lt;em&gt;before&lt;/em&gt; they ever touch your files.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;p&gt;Brainstorm-Mode operates on two enforcement layers:&lt;/p&gt;

&lt;h4&gt;
  
  
  Layer 1: The Soft Layer (Per-Prompt Re-injection)
&lt;/h4&gt;

&lt;p&gt;Using a &lt;code&gt;UserPromptSubmit&lt;/code&gt; hook, the plugin injects a "Do Not Edit" constraint into every single user turn. It’s a constant reminder to the model that it's in ideation mode, re-injected every time to survive context compaction.&lt;/p&gt;

&lt;h4&gt;
  
  
  Layer 2: The Hard Layer (Hook-Level Tool Blocking)
&lt;/h4&gt;

&lt;p&gt;This is where it gets good. Instead of hoping the model obeys, Brainstorm-Mode uses a &lt;code&gt;PreToolUse&lt;/code&gt; hook to intercept tool calls. If the brainstorm lock is active, &lt;strong&gt;any call to a coding tool is deterministically denied.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The model doesn't get to "break character" by accident. It doesn't matter how persuasive the model gets—the tool simply will not run.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Architecture
&lt;/h3&gt;

&lt;p&gt;The core logic is written in Python (stdlib only, zero dependencies) and is entirely agent-agnostic. The &lt;code&gt;core/&lt;/code&gt; folder contains all the state management, meaning you can drop this into:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; (Supported out of the box)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenCode&lt;/strong&gt; (TypeScript adapter supported)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Codex&lt;/strong&gt; (Ready for integration)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also tracks every "drift" attempt (attempts by the model to execute a blocked tool) in a &lt;code&gt;drift-log.jsonl&lt;/code&gt; file, allowing you to actually &lt;em&gt;measure&lt;/em&gt; how much the model fights back against your constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters for AI Engineering
&lt;/h3&gt;

&lt;p&gt;If you are building agents, you know that "prompting" is just the beginning. True reliability comes from &lt;strong&gt;enforcement&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Brainstorm-Mode isn't just a brainstorming tool; it's a case study in control planes. It proves that you don't need to build a whole new AI model to solve alignment issues—you just need to enforce the rules at the infrastructure layer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Get Started
&lt;/h3&gt;

&lt;p&gt;If you are tired of your AI agents coding before they are ready, check out Brainstorm-Mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/mehmetcanfarsak/Brainstorm-Mode" rel="noopener noreferrer"&gt;Brainstorm-Mode on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The "Secret" Weapon (Drift Logging)
&lt;/h3&gt;

&lt;p&gt;One of the coolest side-effects of the &lt;code&gt;drift-log.jsonl&lt;/code&gt; is that you can actually see &lt;em&gt;when&lt;/em&gt; your agent lies to you. If the log fills up with denied &lt;code&gt;Edit&lt;/code&gt; attempts right before context compaction, you know exactly where your control flow is breaking.&lt;/p&gt;

&lt;p&gt;Stop asking your agents nicely to brainstorm. Force them to listen. &lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>llm</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Follow my journey building AI Agents &amp; Developer Tools 🚀</title>
      <dc:creator>Mehmet Can Farsak</dc:creator>
      <pubDate>Thu, 11 Jun 2026 20:19:54 +0000</pubDate>
      <link>https://dev.to/mehmetcanfarsak/follow-my-journey-building-ai-agents-developer-tools-2knm</link>
      <guid>https://dev.to/mehmetcanfarsak/follow-my-journey-building-ai-agents-developer-tools-2knm</guid>
      <description>&lt;p&gt;Hi Dev.to Community! 👋&lt;/p&gt;

&lt;p&gt;I'm an open-source developer and AI enthusiast, focused on building tools that make human-AI collaboration safer and more efficient.&lt;/p&gt;

&lt;p&gt;I write in-depth tutorials and release new tools every month. You can find all my latest content and connect with me here:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;&lt;a href="https://medium.com/@mehmetcanfarsak" rel="noopener noreferrer"&gt;Read my full blog posts on Medium.com/@mehmetcanfarsak&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you'll find there:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🐍 &lt;strong&gt;AI Agents &amp;amp; Tools:&lt;/strong&gt; Deep dives into how we can control LLMs.&lt;/li&gt;
&lt;li&gt;🐍 &lt;strong&gt;Python Tutorials:&lt;/strong&gt; Practical code for developers.&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;Open Source:&lt;/strong&gt; Updates on my latest GitHub projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feel free to follow my profile or check out my latest post on Medium. See you in the comments! 👇&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
