<?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: Bryant Hood</title>
    <description>The latest articles on DEV Community by Bryant Hood (@bryant_hood_5d0e171a08fec).</description>
    <link>https://dev.to/bryant_hood_5d0e171a08fec</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%2F4124655%2F2239e6ed-c06c-4de8-9e40-e124d30988d9.png</url>
      <title>DEV Community: Bryant Hood</title>
      <link>https://dev.to/bryant_hood_5d0e171a08fec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bryant_hood_5d0e171a08fec"/>
    <language>en</language>
    <item>
      <title>Cheap to Build, Hard to Kill</title>
      <dc:creator>Bryant Hood</dc:creator>
      <pubDate>Tue, 29 Sep 2026 14:15:58 +0000</pubDate>
      <link>https://dev.to/bryant_hood_5d0e171a08fec/cheap-to-build-hard-to-kill-1lhp</link>
      <guid>https://dev.to/bryant_hood_5d0e171a08fec/cheap-to-build-hard-to-kill-1lhp</guid>
      <description>&lt;p&gt;I built a tool that automates a piece of the financial close. The engine and the interface came together in a couple of days.&lt;/p&gt;

&lt;p&gt;The other three-quarters of the time went to what nobody demos. Who can approve what. How every entry traces back to the model and the person behind it. How you prove a number came from the live system and not a stale test value someone forgot to rip out.&lt;/p&gt;

&lt;p&gt;AI made the first part cheap. It did not make the second part cheap.&lt;/p&gt;

&lt;p&gt;That matters if you are building a company rather than a weekend project. A solo builder with an AI coding stack can ship a believable version of most software in days. So the question is what still protects you once anyone can copy the features.&lt;/p&gt;

&lt;p&gt;Most answers say data. Here is the 30-second test I use:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If every customer walked tomorrow and took their data with them, would what's left still be worth anything to the next customer?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is no, you are a landlord holding data your customers can carry out the door. Data protects you only when it is hard to copy, stays fresh, and compounds into something a newcomer can't shortcut.&lt;/p&gt;

&lt;p&gt;The longer version, with the research behind the test: &lt;a href="https://medium.com/@brnthood/cheap-to-build-hard-to-kill-5b87edfc27f2?sk=ca565a3cf255830a1bdec7349ce03008" rel="noopener noreferrer"&gt;https://medium.com/@brnthood/cheap-to-build-hard-to-kill-5b87edfc27f2?sk=ca565a3cf255830a1bdec7349ce03008&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>saas</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop Doing It Manually: A Four-Step Framework for Building Your Own Solution</title>
      <dc:creator>Bryant Hood</dc:creator>
      <pubDate>Tue, 29 Sep 2026 14:15:53 +0000</pubDate>
      <link>https://dev.to/bryant_hood_5d0e171a08fec/stop-doing-it-manually-a-four-step-framework-for-building-your-own-solution-2n7n</link>
      <guid>https://dev.to/bryant_hood_5d0e171a08fec/stop-doing-it-manually-a-four-step-framework-for-building-your-own-solution-2n7n</guid>
      <description>&lt;p&gt;I kept forgetting to grab the AI summary before leaving a Teams call. So I built a fix.&lt;/p&gt;

&lt;p&gt;The result is a small Windows program. It watches for a Teams call, records both sides, transcribes on my own machine, and writes a transcript with the Outlook meeting details already in it. The audio is deleted once the transcript lands. A tray icon and a folder of text files are the whole product.&lt;/p&gt;

&lt;p&gt;I did not write it line by line. I ran it through four steps:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notice and explore.&lt;/strong&gt; Catch the thing you work around, then make the agent show you what it assumed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan and premortem.&lt;/strong&gt; Get the plan on the page, then send adversarial agents to poke holes in it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute and test.&lt;/strong&gt; Let the agent type, then run the thing yourself. Reading it won't tell you what running it will.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy and maintain.&lt;/strong&gt; Hand it to a machine that has never seen it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One decision from the plan: I wanted AI summaries of each call. Turning that on meant transcripts leaving my machine, so the feature came out instead.&lt;/p&gt;

&lt;p&gt;The same four steps gave me a lint script for my own writing, a wiki an agent maintains, and a task queue I no longer track by hand.&lt;/p&gt;

&lt;p&gt;The longer version, with the plan file and the install lessons: &lt;a href="https://medium.com/generative-ai/stop-absorbing-the-manual-work-four-steps-to-solving-it-yourself-99ac67f13a01?sk=ffe770bc6740373b16234205f90e6a5d" rel="noopener noreferrer"&gt;https://medium.com/generative-ai/stop-absorbing-the-manual-work-four-steps-to-solving-it-yourself-99ac67f13a01?sk=ffe770bc6740373b16234205f90e6a5d&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>automation</category>
      <category>beginners</category>
    </item>
    <item>
      <title>CLI: You don't need the interface</title>
      <dc:creator>Bryant Hood</dc:creator>
      <pubDate>Tue, 29 Sep 2026 13:46:02 +0000</pubDate>
      <link>https://dev.to/bryant_hood_5d0e171a08fec/cli-you-dont-need-the-interface-3nle</link>
      <guid>https://dev.to/bryant_hood_5d0e171a08fec/cli-you-dont-need-the-interface-3nle</guid>
      <description>&lt;p&gt;Every app charges you clicks to find what you came for. A designer who never met you decided where each button goes. The command line skips that guess.&lt;/p&gt;

&lt;p&gt;The old barrier was memorizing commands. That barrier is gone. Your coding agent already knows them. I never typed one while setting up the routine below. The agent wrote each command, told me in plain English what it would do, and waited for a yes.&lt;/p&gt;

&lt;p&gt;Three tools I use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;clasp&lt;/strong&gt; pushes Apps Script to Google. My agent wrote a script that reads my inbox a few times a week and flags what I owe people. Filters move mail. They can't decide whether I owe someone a reply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DuckDB&lt;/strong&gt; queries a spreadsheet where it sits. Ask which vendors got paid twice last quarter. The agent writes the query and hands back the rows. Nobody types SQL.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;pandoc&lt;/strong&gt; converts documents in bulk. Forty Word files to PDF is one command, not forty rounds of Save As.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The rule I use: when the same clicks repeat every month, look for the back door.&lt;/p&gt;

&lt;p&gt;One warning. Google shows a screen listing everything the script can read, edit and delete. Read it before you approve.&lt;/p&gt;

&lt;p&gt;The longer version, with the exact prompts for each tool: &lt;a href="https://medium.com/@brnthood/cli-for-when-you-want-to-take-the-back-door-a2433d9c6363?sk=b06a664c5aa32908e7614687d2723e77" rel="noopener noreferrer"&gt;https://medium.com/@brnthood/cli-for-when-you-want-to-take-the-back-door-a2433d9c6363?sk=b06a664c5aa32908e7614687d2723e77&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>productivity</category>
      <category>ai</category>
      <category>beginners</category>
    </item>
    <item>
      <title>I made my coding agent audit my prompt before it writes anything</title>
      <dc:creator>Bryant Hood</dc:creator>
      <pubDate>Mon, 21 Sep 2026 13:14:15 +0000</pubDate>
      <link>https://dev.to/bryant_hood_5d0e171a08fec/i-made-my-coding-agent-audit-my-prompt-before-it-writes-anything-56c5</link>
      <guid>https://dev.to/bryant_hood_5d0e171a08fec/i-made-my-coding-agent-audit-my-prompt-before-it-writes-anything-56c5</guid>
      <description>&lt;p&gt;The cost of a vague prompt is paid at the end, not the start. You learn what the model assumed only after it has finished building on the assumption.&lt;/p&gt;

&lt;p&gt;That is the problem worth solving. You write down your intent, the agent acts on what you wrote, and whatever you left out gets inferred. The gaps never announce themselves. The model reaches for the reading its training makes likeliest, which is a decent guess about the average requester and a worse guess about you.&lt;/p&gt;

&lt;p&gt;So I built a skill called &lt;code&gt;clarify&lt;/code&gt;. It is a set of standing instructions the agent reads first, and it can also be called as a &lt;code&gt;/clarify&lt;/code&gt; command. Before work starts, it audits the prompt for every assumption it would otherwise fill silently, surfaces them, and does not proceed until I answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part that makes it usable
&lt;/h2&gt;

&lt;p&gt;Auditing every gap would be unbearable. A prompt has dozens and most of them do not matter. So the skill sorts each assumption into three bands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Settled.&lt;/strong&gt; Only one reading survives. It proceeds without asking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defaulted.&lt;/strong&gt; It picks the likely reading, states it out loud, and lets me veto.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open.&lt;/strong&gt; Two readings would change the deliverable. It has to ask.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only the open ones become questions. That is the difference between a clarifying step you keep and one you switch off after a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  The line the whole thing turns on
&lt;/h2&gt;

&lt;p&gt;From the skill file:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The enemy is not ambiguity, it is silent inference. An expert's prompt is compressed: what they don't say is not absence of intent, it is unstated intent. Recover it from them; do not reconstruct it from your priors.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A compressed prompt is not a bad prompt. Treating compression as absence is what produces confidently wrong work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is
&lt;/h2&gt;

&lt;p&gt;Public, free, no signup: &lt;a href="https://github.com/bryanthood-wph/clarify" rel="noopener noreferrer"&gt;https://github.com/bryanthood-wph/clarify&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Drop it in and call it. It works as a skill file, and the &lt;code&gt;/clarify&lt;/code&gt; command is the same instructions on demand.&lt;/p&gt;

&lt;p&gt;The longer argument, on why a prompt is the cleanest record of your own blind spots, is over here: &lt;a href="https://medium.com/@brnthood/account-for-what-your-prompt-doesnt-say-b443fa3af231?sk=504afa509c9d9df58dbff3290df992a3" rel="noopener noreferrer"&gt;https://medium.com/@brnthood/account-for-what-your-prompt-doesnt-say-b443fa3af231?sk=504afa509c9d9df58dbff3290df992a3&lt;/a&gt;&lt;/p&gt;

</description>
      <category>promptengineering</category>
      <category>ai</category>
      <category>claude</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
