<?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: Aline Mercer</title>
    <description>The latest articles on DEV Community by Aline Mercer (@aline_mercer_e495a3af58ee).</description>
    <link>https://dev.to/aline_mercer_e495a3af58ee</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%2F3805244%2Ff91f4c94-a7d9-49d1-af93-b40e42e00d64.png</url>
      <title>DEV Community: Aline Mercer</title>
      <link>https://dev.to/aline_mercer_e495a3af58ee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aline_mercer_e495a3af58ee"/>
    <language>en</language>
    <item>
      <title>New AI tools come out every week. How do you decide which ones to keep, and how do you stop keeping up from becoming a second job?</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Wed, 21 Oct 2026 15:39:46 +0000</pubDate>
      <link>https://dev.to/octuo/new-ai-tools-come-out-every-week-how-do-you-decide-which-ones-to-keep-and-how-do-you-stop-keeping-1bj</link>
      <guid>https://dev.to/octuo/new-ai-tools-come-out-every-week-how-do-you-decide-which-ones-to-keep-and-how-do-you-stop-keeping-1bj</guid>
      <description>&lt;p&gt;A new assistant, agent or app gets hyped almost daily, each with someone insisting you have to try it. Keeping track of them can turn into a part-time job of its own.&lt;/p&gt;

&lt;p&gt;We'd like to hear what actually works for you, not what the listicles recommend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When did you last drop a tool you were paying for, and what finally made you do it?&lt;/li&gt;
&lt;li&gt;Think of the last new AI tool you tried. Did it make it into your routine, and how did you know?&lt;/li&gt;
&lt;li&gt;What's your rule for letting a new tool in: a short list you revisit, a test on a real task, waiting until someone you trust vouches for it, or simply giving up on keeping up?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any kind of work counts, not just coding, and a quick rule of thumb is as welcome as a story.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drafted with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How do you keep track of three agents running at once without babysitting them?</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Mon, 19 Oct 2026 17:18:07 +0000</pubDate>
      <link>https://dev.to/octuo/how-do-you-keep-track-of-three-agents-running-at-once-without-babysitting-them-5b14</link>
      <guid>https://dev.to/octuo/how-do-you-keep-track-of-three-agents-running-at-once-without-babysitting-them-5b14</guid>
      <description>&lt;p&gt;Say you have three agents running at the same time: coding agents, or any other kind of AI agent working in the background.&lt;/p&gt;

&lt;p&gt;How do you know which one is waiting for you, which one is finished and which one is stuck? Do you flip between tabs, rely on notifications, watch a dashboard, or have you built something of your own?&lt;/p&gt;

&lt;p&gt;When was the last time an agent sat idle because you missed the moment it needed you? And what did you change afterwards?&lt;/p&gt;

&lt;p&gt;We're collecting real setups and real workarounds, and we'll read every reply.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drafted with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How many AI tools do you actually use in a week, and what's the most annoying part of moving work between them?</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Mon, 19 Oct 2026 15:07:59 +0000</pubDate>
      <link>https://dev.to/octuo/how-many-ai-tools-do-you-actually-use-in-a-week-and-whats-the-most-annoying-part-of-moving-work-56cb</link>
      <guid>https://dev.to/octuo/how-many-ai-tools-do-you-actually-use-in-a-week-and-whats-the-most-annoying-part-of-moving-work-56cb</guid>
      <description>&lt;p&gt;We're trying to understand how this really works day to day, so we're asking for specifics rather than opinions.&lt;/p&gt;

&lt;p&gt;Think about last week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which AI tools did you actually open? Chat assistants, coding agents, image, music or video tools, anything counts.&lt;/li&gt;
&lt;li&gt;When you moved a piece of work from one of them to another, what was the most annoying step? Copying context over, re-explaining the background, finding where a result ended up, or juggling several accounts and subscriptions?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you have a workaround (a notes file, a script, a checklist, a habit), please share it. We'll read every answer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drafted with AI assistance.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>ai</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Let an agent sign in for you without showing the model your password</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:26:22 +0000</pubDate>
      <link>https://dev.to/octuo/let-an-agent-sign-in-for-you-without-showing-the-model-your-password-34lo</link>
      <guid>https://dev.to/octuo/let-an-agent-sign-in-for-you-without-showing-the-model-your-password-34lo</guid>
      <description>&lt;p&gt;You are halfway through a task with an agent. It has found the settings page and filled in most of the form, and then it stops: "To continue, please paste your password here." Or it needs an API key for the service it is about to call, and the chat box is right there.&lt;/p&gt;

&lt;p&gt;It feels harmless because the conversation feels private. But a chat is not a safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the chat box is the wrong place
&lt;/h2&gt;

&lt;p&gt;Anything you type into a prompt becomes part of the model's context. Depending on the tool, it may be kept in history, written to logs, sent to a hosted model or summarized into memory that later conversations read. You cannot see or reliably delete all of those copies.&lt;/p&gt;

&lt;p&gt;The same goes for instruction files. Files such as CLAUDE.md or AGENTS.md exist so the model reads them on every run. That makes them a good home for project conventions and a bad home for a token. Treat them as visible to the model, and often to everyone with access to the repository.&lt;/p&gt;

&lt;p&gt;The goal is simple to state: the agent can use a credential, but the raw value never enters the text the model reads or writes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a store the tool calls for the model
&lt;/h2&gt;

&lt;p&gt;The pattern that works is a credential store or vault that sits outside the conversation. The model asks for an action, such as "sign in to the billing portal" or "call the API with the deploy token", and the tool fetches the secret and uses it directly. The model sees a reference or a result, never the value.&lt;/p&gt;

&lt;p&gt;Your operating system's keychain is the simplest version of this; a dedicated secrets vault adds encryption, access rules and a usage history. Either way, check one thing: when the agent uses the secret, does the value show up in the transcript? If it does, the store is decoration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give the agent less than you have
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope tokens.&lt;/strong&gt; Create a token for the one job: read-only if reading is enough, one repository, one project. Do not reuse a key that can do everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expire them.&lt;/strong&gt; A short lifetime turns a leak into a small incident. Set the expiry when you create the token, not later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prefer OAuth and app passwords over master passwords.&lt;/strong&gt; Delegated access can be limited and revoked without changing the password you use everywhere else. A master password should never be something an agent holds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep 2FA and payments in human hands.&lt;/strong&gt; The second factor is where a person confirms intent. Let the agent get you to that screen; you approve the code, the purchase or the transfer yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Log every use, and read the log
&lt;/h2&gt;

&lt;p&gt;A credential an agent can use should leave a trace each time it is used: which secret, when, and for which task. Many services also keep their own sign-in and API activity pages. Set a recurring reminder to skim both. You are looking for uses you do not recognize, at times you were not working, against services you did not ask about.&lt;/p&gt;

&lt;h2&gt;
  
  
  After a paste accident, rotate
&lt;/h2&gt;

&lt;p&gt;If a secret did land in a chat, a log or a committed file, assume it is exposed. Rotate it at the source, revoke the old value, then clean up the copies you can find. Deleting the message is fine, but it does not replace rotation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Risk and the safer habit
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Risk&lt;/th&gt;
&lt;th&gt;Safer habit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pasting a password or key into the chat&lt;/td&gt;
&lt;td&gt;Keep it in a vault or keychain the tool reads on the model's behalf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tokens in CLAUDE.md, AGENTS.md or other instruction files&lt;/td&gt;
&lt;td&gt;Refer to a named secret; never write the value&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;One broad key reused for everything&lt;/td&gt;
&lt;td&gt;Scoped, per-task tokens with an expiry date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The agent holds your master password&lt;/td&gt;
&lt;td&gt;OAuth or app-specific passwords you can revoke&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The agent completes 2FA or a payment alone&lt;/td&gt;
&lt;td&gt;You confirm the code, purchase or transfer yourself&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No record of what the agent did with access&lt;/td&gt;
&lt;td&gt;A usage log per secret, reviewed on a schedule&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A secret leaked into a transcript&lt;/td&gt;
&lt;td&gt;Rotate at the source first, then clean up&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Before you let an agent sign in through a browser
&lt;/h2&gt;

&lt;p&gt;Browser sign-in is where agents become most useful for website chores. Before you grant it, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] The credential comes from a store, not from the chat or a file the model reads.&lt;/li&gt;
&lt;li&gt;[ ] The account has the least access the task needs; a separate, limited account is better where the site allows it.&lt;/li&gt;
&lt;li&gt;[ ] 2FA stays on, and the second factor reaches you, not the agent.&lt;/li&gt;
&lt;li&gt;[ ] Payments, account deletion and security settings need your confirmation.&lt;/li&gt;
&lt;li&gt;[ ] You can see which sites the agent signed in to, and when.&lt;/li&gt;
&lt;li&gt;[ ] You know how to revoke the session or token in one step.&lt;/li&gt;
&lt;li&gt;[ ] Saved browser sessions are cleared or expire when the task is done.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this needs special tooling to start. Move the next secret out of the prompt, shorten the next token's life, and keep the last click on anything irreversible for yourself.&lt;/p&gt;

&lt;p&gt;This post comes from the Octuo team at Tutuo, Inc. More of our notes on handing work to agents are on &lt;a href="https://www.tutuo.ai/en/blog/?utm_source=devto-org&amp;amp;utm_medium=post&amp;amp;utm_campaign=w4&amp;amp;utm_content=pos-vault" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drafted with AI assistance and reviewed before publishing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>security</category>
      <category>productivity</category>
      <category>llm</category>
    </item>
    <item>
      <title>The handoff brief: what to write before a coding agent starts</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:51:11 +0000</pubDate>
      <link>https://dev.to/octuo/the-handoff-brief-what-to-write-before-a-coding-agent-starts-3a3d</link>
      <guid>https://dev.to/octuo/the-handoff-brief-what-to-write-before-a-coding-agent-starts-3a3d</guid>
      <description>&lt;p&gt;Most agent runs that go sideways don't fail at the code. They fail at the handoff. The task lived in someone's head and the prompt carried only half of it. The diff that comes back answers a slightly different question than the one we meant to ask. Reviewing it then means working backwards from the output to the intent, and that is the slow direction.&lt;/p&gt;

&lt;p&gt;So before we give any non-trivial task to Codex or Claude Code, we write a short handoff brief. Review then becomes a comparison: did the run do what the brief said, and nothing else?&lt;/p&gt;

&lt;h2&gt;
  
  
  What goes in a brief
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal&lt;/strong&gt;: the outcome in one or two sentences, not the method.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope&lt;/strong&gt;: what the agent may change, as paths or modules.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Off limits&lt;/strong&gt;: files and behaviour it must not touch, even if it thinks it should.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Checks&lt;/strong&gt;: the exact commands that prove the change works.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Done&lt;/strong&gt;: the observable state that ends the task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report back&lt;/strong&gt;: what the summary must contain.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalate, don't guess&lt;/strong&gt;: decisions that belong to a human.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last item does the most work. When an agent hits an ambiguity, it will usually resolve it somehow. If you name the ambiguities up front, a silent guess becomes a question in the report.&lt;/p&gt;

&lt;h2&gt;
  
  
  The template
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Goal&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;What&lt;/span&gt; &lt;span class="na"&gt;should&lt;/span&gt; &lt;span class="na"&gt;be&lt;/span&gt; &lt;span class="na"&gt;true&lt;/span&gt; &lt;span class="na"&gt;when&lt;/span&gt; &lt;span class="na"&gt;this&lt;/span&gt; &lt;span class="na"&gt;is&lt;/span&gt; &lt;span class="na"&gt;done.&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="gu"&gt;## Scope&lt;/span&gt;
May change:
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;path&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;module&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

Off limits (do not edit, even to "fix" something):
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;generated&lt;/span&gt; &lt;span class="na"&gt;code&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;migrations&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;lockfiles&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;CI&lt;/span&gt; &lt;span class="na"&gt;config&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;public&lt;/span&gt; &lt;span class="na"&gt;interfaces&lt;/span&gt; &lt;span class="na"&gt;other&lt;/span&gt; &lt;span class="na"&gt;code&lt;/span&gt; &lt;span class="na"&gt;depends&lt;/span&gt; &lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="gu"&gt;## Context&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;Why&lt;/span&gt; &lt;span class="na"&gt;this&lt;/span&gt; &lt;span class="na"&gt;change&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt; &lt;span class="na"&gt;constraints&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;code&lt;/span&gt; &lt;span class="na"&gt;doesn&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="na"&gt;t&lt;/span&gt; &lt;span class="na"&gt;show&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;Link&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;the&lt;/span&gt; &lt;span class="na"&gt;issue&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;prior&lt;/span&gt; &lt;span class="na"&gt;decision&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="gu"&gt;## How to check&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Run: &lt;span class="nt"&gt;&amp;lt;test&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Run: &lt;span class="nt"&gt;&amp;lt;lint&lt;/span&gt; &lt;span class="err"&gt;/&lt;/span&gt; &lt;span class="na"&gt;type-check&lt;/span&gt; &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Expected: all pass, no tests skipped or deleted

&lt;span class="gu"&gt;## Done means&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;Observable&lt;/span&gt; &lt;span class="na"&gt;condition&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="gu"&gt;## Report back&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Files changed, one line on why for each
&lt;span class="p"&gt;-&lt;/span&gt; Commands run and their results
&lt;span class="p"&gt;-&lt;/span&gt; Anything noticed but not changed
&lt;span class="p"&gt;-&lt;/span&gt; Every assumption made

&lt;span class="gu"&gt;## Escalate instead of guessing&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;Behaviour&lt;/span&gt; &lt;span class="na"&gt;changes&lt;/span&gt; &lt;span class="na"&gt;visible&lt;/span&gt; &lt;span class="na"&gt;to&lt;/span&gt; &lt;span class="na"&gt;callers&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;users&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;New&lt;/span&gt; &lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt; &lt;span class="na"&gt;secrets&lt;/span&gt; &lt;span class="na"&gt;or&lt;/span&gt; &lt;span class="na"&gt;credentials&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="nt"&gt;&amp;lt;Checks&lt;/span&gt; &lt;span class="na"&gt;that&lt;/span&gt; &lt;span class="na"&gt;cannot&lt;/span&gt; &lt;span class="na"&gt;pass&lt;/span&gt; &lt;span class="na"&gt;without&lt;/span&gt; &lt;span class="na"&gt;touching&lt;/span&gt; &lt;span class="na"&gt;an&lt;/span&gt; &lt;span class="na"&gt;off-limits&lt;/span&gt; &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep it short. Codex's docs on managing usage advise controlling the size of prompts and reducing the size of AGENTS.md. The same logic holds for readability, because a brief that restates the codebase gets skimmed. Durable project rules belong in the instruction file the tool already reads (AGENTS.md, CLAUDE.md), and the brief covers only this task. Claude Code's guidance to use /clear when starting a new task fits well here: clear the context, then paste the brief.&lt;/p&gt;

&lt;h2&gt;
  
  
  A vague brief and a better one
&lt;/h2&gt;

&lt;p&gt;The task: a small internal service still calls a deprecated &lt;code&gt;fetchLegacy&lt;/code&gt; method on its HTTP client wrapper.&lt;/p&gt;

&lt;p&gt;The vague version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Replace the deprecated fetchLegacy calls with the new client API and make sure everything still works.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That brief leaves four questions open:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which files count?&lt;/li&gt;
&lt;li&gt;Must the retry behaviour be kept?&lt;/li&gt;
&lt;li&gt;What does "everything" mean?&lt;/li&gt;
&lt;li&gt;What happens to call sites that pass options the new API lacks?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The agent will answer all four. We just won't know how until we read the diff.&lt;/p&gt;

&lt;p&gt;The better version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Goal:&lt;/strong&gt; no calls to &lt;code&gt;fetchLegacy&lt;/code&gt; remain in &lt;code&gt;src/&lt;/code&gt;; behaviour for callers is unchanged.&lt;br&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; &lt;code&gt;src/clients/&lt;/code&gt; and &lt;code&gt;src/handlers/&lt;/code&gt;. Off limits: &lt;code&gt;src/generated/&lt;/code&gt;, the dependency manifest and lockfile, &lt;code&gt;migrations/&lt;/code&gt;.&lt;br&gt;
&lt;strong&gt;Check:&lt;/strong&gt; unit tests and type-checker pass, with no tests skipped or deleted.&lt;br&gt;
&lt;strong&gt;Done:&lt;/strong&gt; a search for &lt;code&gt;fetchLegacy&lt;/code&gt; in &lt;code&gt;src/&lt;/code&gt; finds only its definition, which stays for a follow-up.&lt;br&gt;
&lt;strong&gt;Report:&lt;/strong&gt; each call site changed, and how retries are handled now.&lt;br&gt;
&lt;strong&gt;Escalate:&lt;/strong&gt; any call site relying on an option the new API lacks. Leave it unchanged and list it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's the same task, but now the reviewer knows what a correct diff looks like before opening it.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the run comes back
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Diff first, summary second.&lt;/strong&gt; The summary is an account of the work; the diff is the work. Check the file list against Scope and Off limits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rerun the checks yourself&lt;/strong&gt;, using the commands from the brief, in a clean state. "Tests pass" in a report is a claim, not evidence.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Look for silent scope creep&lt;/strong&gt;: reformatted files, renamed helpers, a nearby cleanup, a loosened assertion, a new dependency. Each may be fine. None should be a surprise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Answer the escalations&lt;/strong&gt; and write the answers down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Record decisions&lt;/strong&gt; in the brief, the commit message or the PR description, so the next brief starts from there.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where context gets lost between tools
&lt;/h2&gt;

&lt;p&gt;The weak point is rarely inside one run. It sits between runs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reasoning from a planning chat never reaches the agent.&lt;/li&gt;
&lt;li&gt;An escalation gets answered in one terminal and then forgotten.&lt;/li&gt;
&lt;li&gt;A follow-up starts in another tool without any of the earlier decisions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each tool keeps its own session history. A brief kept in a file and updated with what came back is the one thing that carries across tools. Treat it like code: version it, review it and reuse it.&lt;/p&gt;

&lt;p&gt;This post comes from the Octuo team at Tutuo, Inc. More of our notes on running coding agents are on &lt;a href="https://www.tutuo.ai/en/blog/?utm_source=devto-org&amp;amp;utm_medium=post&amp;amp;utm_campaign=w4" rel="noopener noreferrer"&gt;our blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drafted with AI assistance; the tool behaviour mentioned was checked against the Codex and Claude Code documentation before publishing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Octuo — Your AI (SI) Hands</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Mon, 12 Oct 2026 04:09:57 +0000</pubDate>
      <link>https://dev.to/aline_mercer_e495a3af58ee/octuo-your-ai-si-hands-3po5</link>
      <guid>https://dev.to/aline_mercer_e495a3af58ee/octuo-your-ai-si-hands-3po5</guid>
      <description>&lt;p&gt;If you use a lot of AI tools, you know how this goes. A typical setup could be Claude Code or Codex for code, sometimes one account for work and another for personal use; Figma or Google Stitch for design, Midjourney for images, Suno for music, Perplexity for research, Gamma for slides, n8n for automation, and so on and so forth. New ones keep showing up, and you often hear about them from someone else.&lt;/p&gt;

&lt;p&gt;Each one is good at its job. But it has gotten complicated enough that at some point you want a tool just to manage your tools. Right now that tool is you. You copy context from one window to another and explain the same thing again to each of them.&lt;/p&gt;

&lt;p&gt;We made Octuo for that. It can do a lot, but at its core it is an assistant that works through those tools for you. You say what you want, it hands the pieces to the right tool or agent, follows each run, and brings the results back to one place. What you want, what you need, how the work is going and what came out of it all live in that one place, and the assistant can always reach it, with nothing in between. Over time the effort you put in adds up and compounds there, instead of scattering across ten tools.&lt;/p&gt;

&lt;p&gt;Say you need a bug fixed, an icon, and a short soundtrack. You ask once. Octuo briefs the Claude Code and/or Codex already on your computer, in parallel, and hands the rest to other tools you have registered. If you have connected several accounts you are authorized to use, it spreads the work across them, passes along the context each job needs, and gives you one report at the end.&lt;/p&gt;

&lt;p&gt;You stop repeating yourself too. Which projects you are tracking, which chores are open, what is still unsolved: you should not have to say it again every week. Octuo recalls what you have said anywhere in your account. You also stop clicking through websites one by one. The agent does it in your browser, within the permissions you give it. When a site needs a login it uses a password from an encrypted vault, and the model never sees the password. Each use is logged, so you can check that the model is not doing anything it should not.&lt;/p&gt;

&lt;p&gt;People talk about raising an agent, meaning teaching it how you work. The trouble is that each vendor's agent tends to learn only inside its own product, so with ten of them you raise ten. We think it makes more sense to raise one assistant and let it carry what it knows about you into the work it hands over. It is also a maintained product that keeps improving and reaching more of what is out there, so you do not have to follow and tune every new tool yourself.&lt;/p&gt;

&lt;p&gt;Being a product we sell also means the experience gets real attention. The memory is a graph you can open, edit, or tell it to forget, so you can check whether it remembers what you care about. You can easily talk to it by voice, or dictate instead of typing. And you can see at a glance what is running, what is done, and what is waiting for your decision. When you can see it is handled, you stop checking. Some jobs are long and have many steps. Hand those over too. It keeps taking care of them on its own for as long as it can, and schedules and watches run by themselves and only speak up when something changes. On top of all that, you can simply stay on Octuo's home screen, say a few words, and let every agent in the system work for you.&lt;/p&gt;

&lt;p&gt;Octuo is a native app for Mac today, an iPhone companion is coming, and we plan to support more platforms. Most model calls go to cloud-hosted models, so what a model needs for a task goes to its provider. On first launch macOS asks for Screen Recording and Accessibility permissions, and whether to grant them is your call. It is a paid product, and the page has the details.&lt;/p&gt;

&lt;p&gt;We would like to hear from you. Which of your tools and accounts are hardest to keep track of right now? What kind of assistant do you wish you had, and what would you hand over first? And if you try it, give it a long, multi-step job and tell us what else you want improved. &lt;/p&gt;

&lt;p&gt;The tools named above are only examples. Their names belong to their owners, and we have no affiliation with them.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>productivity</category>
      <category>tools</category>
    </item>
    <item>
      <title>I Built an AI Agent Tool Marketplace on a Static Site (It Costs Almost Nothing)</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Sun, 08 Mar 2026 01:36:56 +0000</pubDate>
      <link>https://dev.to/aline_mercer_e495a3af58ee/i-built-an-ai-agent-tool-marketplace-on-a-static-site-it-costs-almost-nothing-44c9</link>
      <guid>https://dev.to/aline_mercer_e495a3af58ee/i-built-an-ai-agent-tool-marketplace-on-a-static-site-it-costs-almost-nothing-44c9</guid>
      <description>&lt;p&gt;If you are building with AI agents, you have probably hit this wall: your agent needs tools but finding them means digging through GitHub repos and random blog posts. There is no npm for AI agent tools.&lt;/p&gt;

&lt;p&gt;That is the problem I set out to solve with &lt;a href="https://tutuoai.com" rel="noopener noreferrer"&gt;TutuoAI&lt;/a&gt;, a marketplace for AI agent tools. We now catalog 116 products (38 paid, 78 free), and the entire thing runs on a static site architecture that costs almost nothing to operate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Discovery Problem
&lt;/h2&gt;

&lt;p&gt;AI agents are only as good as the tools they can access. Tool discovery is a mess:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;For developers&lt;/strong&gt;: You Google AI tools, get 50 listicles, spend hours evaluating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For agents&lt;/strong&gt;: No machine-readable catalog exists&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;For tool builders&lt;/strong&gt;: Hard to get discovered&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Architecture: Why Static Wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;S3 + CloudFront&lt;/strong&gt; serves pre-rendered HTML pages. &lt;strong&gt;Stripe Checkout&lt;/strong&gt; handles payments with no backend. No servers, no databases, no containers.&lt;/p&gt;

&lt;p&gt;Cost: essentially free. Speed: ~50ms globally. Reliability: 99.999999999% durability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making It Machine-Readable: llms.txt and JSON-LD
&lt;/h2&gt;

&lt;p&gt;I implemented &lt;a href="https://llmstxt.org/" rel="noopener noreferrer"&gt;llms.txt&lt;/a&gt; so any AI agent can programmatically discover what tools are available. Every product page also includes Schema.org JSON-LD for structured data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What worked:&lt;/strong&gt; Static architecture kept costs at zero. llms.txt generated interest from AI developers. Stripe Checkout eliminated weeks of backend work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What did not work yet:&lt;/strong&gt; Zero-traffic chicken-and-egg problem. SEO takes months. llms.txt adoption is still early.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check It Out
&lt;/h2&gt;

&lt;p&gt;If you are building AI agent tools or want to discover what exists, check out &lt;a href="https://tutuoai.com" rel="noopener noreferrer"&gt;tutuoai.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Drop a comment if you have questions about the architecture!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>showdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>I Built a $1 AI Agent Tools Marketplace with Zero Backend — Here's the Architecture</title>
      <dc:creator>Aline Mercer</dc:creator>
      <pubDate>Wed, 04 Mar 2026 07:18:50 +0000</pubDate>
      <link>https://dev.to/aline_mercer_e495a3af58ee/i-built-a-1-ai-agent-tools-marketplace-with-zero-backend-heres-the-architecture-34la</link>
      <guid>https://dev.to/aline_mercer_e495a3af58ee/i-built-a-1-ai-agent-tools-marketplace-with-zero-backend-heres-the-architecture-34la</guid>
      <description>&lt;h2&gt;
  
  
  The Discovery Problem
&lt;/h2&gt;

&lt;p&gt;AI agents are only as good as the tools they can access. But right n&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>ai</category>
      <category>webdev</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
