<?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: Chris</title>
    <description>The latest articles on DEV Community by Chris (@christie304).</description>
    <link>https://dev.to/christie304</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%2F2199260%2F88156e54-e566-4fbd-bbb2-bee75bf06148.jpeg</url>
      <title>DEV Community: Chris</title>
      <link>https://dev.to/christie304</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christie304"/>
    <language>en</language>
    <item>
      <title>Why Every Developer Needs a Second Brain</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Sun, 29 Mar 2026 18:33:41 +0000</pubDate>
      <link>https://dev.to/christie304/why-every-developer-needs-a-second-brain-366f</link>
      <guid>https://dev.to/christie304/why-every-developer-needs-a-second-brain-366f</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Your notes belong to you... not a SaaS company's database. Obsidian is a markdown-native infinitely extensible tool where you can build what developer's dub a "second brain".&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Free + private&lt;/li&gt;
&lt;li&gt;Password protection + encryption&lt;/li&gt;
&lt;li&gt;Turn your notes into a database&lt;/li&gt;
&lt;li&gt;Code Funsies&lt;/li&gt;
&lt;li&gt;Custom CSS&lt;/li&gt;
&lt;li&gt;The bottom line&lt;/li&gt;
&lt;li&gt;Supercharge with Claude + MCP&lt;/li&gt;
&lt;li&gt;Links to get started&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Free, local, and actually yours
&lt;/h2&gt;

&lt;p&gt;Obsidian is &lt;strong&gt;free for personal use&lt;/strong&gt;. Your vault is just a folder of &lt;code&gt;.md&lt;/code&gt; files on your machine. There's no proprietary format, no subscription required, no max and no limits. &lt;/p&gt;

&lt;p&gt;The "cloud" is growing, and our farmland is being replaced with data centers. I have iCloud which helps with my phone backup and makes it easy to setup new devices, but aside from that, I don't want &lt;em&gt;my&lt;/em&gt; data on &lt;em&gt;someone else's&lt;/em&gt; machine. It's inevitable on some level, but I like to do what I can to prevent it. &lt;/p&gt;

&lt;p&gt;I digress... for your Obsidian notes, you can back them up with git, sync with your own solution, or keep them entirely offline. You can get an Obsidian Sync subscription - more on that next - but the free version is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Free for personal use&lt;/li&gt;
&lt;li&gt;✅ Plain markdown files — open in any editor&lt;/li&gt;
&lt;li&gt;✅ Privacy-first, completely offline&lt;/li&gt;
&lt;li&gt;✅ No account = No limits&lt;/li&gt;
&lt;li&gt;✅ No polluting the ever growing "cloud"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Password protection and end-to-end encryption
&lt;/h2&gt;

&lt;p&gt;You can set a &lt;strong&gt;vault password&lt;/strong&gt; to lock access to your notes at the app level if you wanted added security.&lt;/p&gt;

&lt;p&gt;If you use &lt;strong&gt;Obsidian Sync&lt;/strong&gt;, your data is encrypted end-to-end before it ever leaves your device. Sync keys never reach Obsidian's servers. Even if their infrastructure were compromised, your notes are unreadable.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Note on Sync:&lt;/strong&gt; Obsidian Sync is the paid cloud option, but it's entirely optional. Many devs use iCloud, Syncthing, or a private Git repo instead — and keep E2E encryption handled on their own terms.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Obsidian Bases ✨ EXCITING NEW FEATURE!!
&lt;/h2&gt;

&lt;p&gt;Think Notion databases — but in your local markdown vault. And of course, it's local-first - All data stays in your vault as plain markdown and not in an external DB.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bases&lt;/strong&gt; lets you create structured views over your notes using a simple table or gallery interface. Filter, sort, and group notes by properties without leaving Obsidian. For developers this means you can finally treat your vault like a lightweight database, with zero sync overhead.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ovdwttzp7ji8m3mey6g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7ovdwttzp7ji8m3mey6g.png" alt=" " width="800" height="695"&gt;&lt;/a&gt;&lt;br&gt;
 Screenshot from &lt;a href="https://www.nickgracilla.com/posts/lexicons-with-obsidian-bases/" rel="noopener noreferrer"&gt;www.nickgracilla.com&lt;/a&gt;&lt;/p&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Table view&lt;/td&gt;
&lt;td&gt;Spreadsheet-style view over frontmatter properties across notes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Filter &amp;amp; sort&lt;/td&gt;
&lt;td&gt;Query notes by any property - tags, date, custom fields&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gallery view&lt;/td&gt;
&lt;td&gt;Card-based visual layout for overviews and kanban-style boards&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  Coding Funsies
&lt;/h2&gt;

&lt;p&gt;Add blocks of code IN your notes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmz16b7cvr1ucubrfl4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmz16b7cvr1ucubrfl4m.png" alt=" " width="343" height="120"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Use the &lt;strong&gt;Code Emitter&lt;/strong&gt; plugin inside your vault turning Obsidian into a lightweight programming environment - great for documenting scripts, learning new languages, and you could even use it for prototyping.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sd5eprs24b8nnk1q9q9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1sd5eprs24b8nnk1q9q9.png" alt=" " width="346" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll even get errors!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feibrhth1d0cukgd4bxat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feibrhth1d0cukgd4bxat.png" alt=" " width="323" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you have your code block, you can use the &lt;strong&gt;Copy Inline Code&lt;/strong&gt; icon to simply click to copy. &lt;/p&gt;


&lt;h2&gt;
  
  
  Custom CSS: full control over print and PDF export
&lt;/h2&gt;

&lt;p&gt;Obsidian supports custom CSS snippets! Drop a &lt;code&gt;.css&lt;/code&gt; file in &lt;code&gt;.obsidian/snippets/&lt;/code&gt; and it applies vault-wide.&lt;/p&gt;

&lt;p&gt;I just had killer use case for this when I wanted to control my PDF exports, because boy - they were ugly! I grew tired of typing "sorry for the formatting, it's from my Obsidian notes" every time I shared a document with someone.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* .obsidian/snippets/print-control.css */&lt;/span&gt;

&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="n"&gt;print&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nc"&gt;.sidebar&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
  &lt;span class="nc"&gt;.status-bar&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nc"&gt;.markdown-preview-view&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;11pt&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nt"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;h3&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;page-break-after&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;avoid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nt"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nt"&gt;code&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;white-space&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;pre-wrap&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="m"&gt;#ccc&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use this to strip chrome, set print-friendly typography, control page breaks around headings and code blocks, and produce clean PDFs from technical notes without touching a separate tool. Can you imagine copying some to or from oldschool Word? &lt;em&gt;&lt;strong&gt;The absolute horror!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Pro tip:&lt;/strong&gt; Combine a print snippet with a dedicated &lt;em&gt;export theme&lt;/em&gt; (a separate CSS snippet you toggle only before printing) for perfectly formatted technical docs every time. &lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Supercharge your vault with Claude + MCP
&lt;/h2&gt;

&lt;p&gt;Obsidian has a community plugin called &lt;strong&gt;Local REST API&lt;/strong&gt; that exposes your vault over HTTP — and that's all you need to connect it to AI.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you need
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/coddingtonbear/obsidian-local-rest-api" rel="noopener noreferrer"&gt;Local REST API plugin&lt;/a&gt; — install from Community Plugins&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://claude.ai/download" rel="noopener noreferrer"&gt;Claude Desktop&lt;/a&gt; or &lt;strong&gt;Claude Code&lt;/strong&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code" rel="noopener noreferrer"&gt;VS Code extension&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Wiring it up
&lt;/h3&gt;

&lt;p&gt;In your Claude Desktop config (&lt;code&gt;claude_desktop_config.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"obsidian"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-obsidian"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"OBSIDIAN_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-api-key-here"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"OBSIDIAN_HOST"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://127.0.0.1:27123"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In your Claude Code VS Code config (&lt;code&gt;.claude/settings.json&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"obsidian"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp-obsidian"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"OBSIDIAN_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-api-key-here"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"OBSIDIAN_HOST"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http://127.0.0.1:27123"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your API key is generated inside the Local REST API plugin settings in Obsidian.&lt;/p&gt;

&lt;h3&gt;
  
  
  What you can do once connected
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Ask Claude to search, read, and write notes in your vault&lt;/li&gt;
&lt;li&gt;Have Claude append meeting summaries or code snippets directly to existing notes&lt;/li&gt;
&lt;li&gt;Use Claude Code to reference your vault docs while you're coding — without copy-pasting anything&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Pro tip:&lt;/strong&gt; Keep a &lt;code&gt;CLAUDE.md&lt;/code&gt; file in your vault root as a persistent context file — Claude will read it automatically and know your preferences, project structure, and shorthand without you repeating yourself every session.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;em&gt;What Obsidian plugins are you using that belong on this list? Drop them in the comments.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Links to Get Started
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Obsidian&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://obsidian.md" rel="noopener noreferrer"&gt;obsidian.md&lt;/a&gt; — download free&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://obsidian.md/sync" rel="noopener noreferrer"&gt;Obsidian Sync&lt;/a&gt; — optional paid cloud sync with E2E encryption&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Plugins&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/coddingtonbear/obsidian-local-rest-api" rel="noopener noreferrer"&gt;Local REST API repo&lt;/a&gt; — expose your vault over HTTP for MCP/AI integration&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mokeyish/obsidian-code-emitter" rel="noopener noreferrer"&gt;Code Emitter&lt;/a&gt; — run code blocks directly inside your vault&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Alddar/obsidian-copy-inline-code-plugin" rel="noopener noreferrer"&gt;Copy Inline Code&lt;/a&gt; — click any inline code span to copy it instantly&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/scambier/obsidian-omnisearch" rel="noopener noreferrer"&gt;Omnisearch&lt;/a&gt; — full-text semantic search across your vault&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Claude / AI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://claude.ai/download" rel="noopener noreferrer"&gt;Claude Desktop&lt;/a&gt; — download&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://marketplace.visualstudio.com/items?itemName=anthropic.claude-code" rel="noopener noreferrer"&gt;Claude Code VS Code extension&lt;/a&gt; — VS Code marketplace&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/mcp-obsidian" rel="noopener noreferrer"&gt;mcp-obsidian on npm&lt;/a&gt; — the MCP server package&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Referenced&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.nickgracilla.com/posts/lexicons-with-obsidian-bases/" rel="noopener noreferrer"&gt;nickgracilla.com — Lexicons with Obsidian Bases&lt;/a&gt; — Bases screenshot source&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>obsidian</category>
      <category>productivity</category>
      <category>devtools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Claude + Obsidian: Closing the Gap Between Ideas and Execution</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Tue, 24 Mar 2026 23:34:50 +0000</pubDate>
      <link>https://dev.to/christie304/claude-obsidian-closing-the-gap-between-ideas-and-execution-2bdb</link>
      <guid>https://dev.to/christie304/claude-obsidian-closing-the-gap-between-ideas-and-execution-2bdb</guid>
      <description>&lt;p&gt;Claude Code closed a loop for me today where everything - meetings, decisions, specs, code, documentation - are all connected using AI.&lt;/p&gt;

&lt;p&gt;Not just stored.&lt;br&gt;
Connected.&lt;/p&gt;

&lt;p&gt;Most of the time, information is scattered everywhere: Teams, Slack, Notebooks (physical and digital), GitHub, Confluence, and in your head.&lt;/p&gt;

&lt;p&gt;A lot of time can be lost on large systems — not writing code but figuring out what’s going on.&lt;/p&gt;

&lt;p&gt;So, I started experimenting with a different approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Capture: Meetings Become Part of a Knowledge Base
&lt;/h2&gt;

&lt;p&gt;The first problem to solve was capturing information automatically. I started using Plaud.ai Notepin last year to improve my notetaking, but I was originally exporting markdown files to save to Obsidian. &lt;/p&gt;

&lt;p&gt;Meetings are recorded, transcribed, summarized, and automatically stored as markdown files in an Obsidian vault. That means meetings are no longer just conversations — they become searchable, permanent knowledge.&lt;/p&gt;

&lt;p&gt;But now, I am automating it and giving agents access to it alongside the code.&lt;/p&gt;

&lt;p&gt;Here’s the meeting capture flow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakoks8p95s7i0nh8saku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakoks8p95s7i0nh8saku.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Spec: Knowledge Becomes Requirements or Revisions
&lt;/h2&gt;

&lt;p&gt;Once meetings are stored as markdown, the next step is where things start to change.&lt;/p&gt;

&lt;p&gt;Instead of writing specs from scratch, what if the agent reads meeting notes as part of its planning phase. &lt;/p&gt;

&lt;p&gt;Here’s the spec-driven workflow:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1lm0z77r43afmnqjd44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl1lm0z77r43afmnqjd44.png" alt=" " width="647" height="2052"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The agent is not working from a prompt.&lt;br&gt;
The agent is working from a living spec.&lt;/p&gt;

&lt;p&gt;The spec becomes the source of truth, and it is continuously updated based on meetings, new decisions, and implementation feedback. But we don't have to stop at just meetings - we could have other documentation, architecture notes, and business rules.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Memory: The System Can See Everything
&lt;/h2&gt;

&lt;p&gt;Now comes the part that really changes things.&lt;/p&gt;

&lt;p&gt;Because meetings, specs, code, and tests are all stored in accessible locations, the agent can reason across all of them.&lt;/p&gt;

&lt;p&gt;This enables completely different kinds of questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What decisions from meetings are not in the spec?&lt;/li&gt;
&lt;li&gt;What parts of the spec are not implemented?&lt;/li&gt;
&lt;li&gt;What changed between the original request and the final implementation?&lt;/li&gt;
&lt;li&gt;What risks were mentioned but never addressed?&lt;/li&gt;
&lt;li&gt;Write a status update based on meetings, specs, and commits.&lt;/li&gt;
&lt;li&gt;Generate documentation for stakeholders based on everything above.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is more than automation.&lt;/p&gt;

&lt;p&gt;This is intelligent traceability.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxd2almbwagz8zk8o6yt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flxd2almbwagz8zk8o6yt.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We now have a knowledge base for each feature, for each system, for each department, or a business in its entirety.&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Control for Decisions
&lt;/h2&gt;

&lt;p&gt;We version control code. But we don’t always version control decisions. When AI can see meetings, specs, code, and documentation together, it stops being just a coding assistant.&lt;/p&gt;

&lt;p&gt;What I'm envisioning is a system where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meetings are captured&lt;/li&gt;
&lt;li&gt;Decisions are stored&lt;/li&gt;
&lt;li&gt;Specs are living documents&lt;/li&gt;
&lt;li&gt;Code is generated from specs&lt;/li&gt;
&lt;li&gt;Tests and documentation are generated automatically&lt;/li&gt;
&lt;li&gt;And AI can reason across all of it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the first time, we have something close to infinite memory for our systems. And that really changes everything.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agents</category>
    </item>
    <item>
      <title>Self-Refining Agents in Spec-Driven Development</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Sun, 22 Mar 2026 14:42:37 +0000</pubDate>
      <link>https://dev.to/christie304/self-refining-agents-in-spec-driven-development-j9</link>
      <guid>https://dev.to/christie304/self-refining-agents-in-spec-driven-development-j9</guid>
      <description>&lt;p&gt;I’ve been experimenting with a spec-driven workflow, and I accidentally discovered something I didn’t expect: the agent started reviewing and improving its own work.&lt;/p&gt;

&lt;p&gt;What I discovered is not &lt;strong&gt;new&lt;/strong&gt; in terms of agentic AI; it's the &lt;strong&gt;point&lt;/strong&gt; of agentic AI, but how I stumbled across it in my test was interesting nonetheless.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Basic Idea
&lt;/h2&gt;

&lt;p&gt;I created a &lt;code&gt;spec.prompt.md&lt;/code&gt; file. This prompt accepts a ticket number and the pasted contents of the technical specifications. Then I run a command like:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/spec &amp;lt;ticket-number&amp;gt; &amp;lt;pasted-contents&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Originally, each time I ran &lt;code&gt;/spec&lt;/code&gt;, it would overwrite everything and start from scratch. That worked, but it didn’t allow me to iterate or compare changes between passes.&lt;/p&gt;

&lt;p&gt;So I added two modes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-o&lt;/code&gt; = overwrite&lt;/p&gt;

&lt;p&gt;&lt;code&gt;-i&lt;/code&gt; = iterate&lt;/p&gt;

&lt;h2&gt;
  
  
  The Iterate Model
&lt;/h2&gt;

&lt;p&gt;When I run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec -i 1234 &amp;lt;contents&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It creates a folder structure like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/specs/1234/
    p01/
        spec.md
        plan.md
        implementation.md
        files...
    p02/
        spec.md
        plan.md
        implementation.md
        files...
    p03/
        ...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The original intent was to provide myself a comparison between &lt;code&gt;p01&lt;/code&gt; vs &lt;code&gt;p02&lt;/code&gt; to see if changes to the spec were implemented correctly but something unexpected happened. &lt;/p&gt;

&lt;p&gt;For my first test of &lt;code&gt;-i&lt;/code&gt;, I didn't change the spec at all. I just ran the same spec again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec -i 1234 &amp;lt;original contents&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I expected it to regenerate everything so I could compare Pass 1 to Pass 2. Instead, Pass 2 did something even &lt;strong&gt;&lt;em&gt;smarter&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;When reviewing Pass 2, I couldn't find the original build scripts and the bulk of the work was missing. I was confused why I only found a single file. &lt;/p&gt;

&lt;p&gt;Then, it clicked: it had reviewed its previous pass to identify any gaps in the duplicated spec I provided, determined it was mostly correct, and refined its original pass. &lt;/p&gt;

&lt;p&gt;That’s when this stopped being just a prompt and started looking like an agent. I didn’t tell it to rewrite everything. I didn’t tell it to only fix what was wrong. I didn’t tell it to review its previous implementation. &lt;em&gt;It chose to.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Its self-refinement process made me rethink my own process. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Process
&lt;/h2&gt;

&lt;p&gt;Currently I have these prompts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;spec.prompt.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;spec-implement.prompt.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;spec-testing.prompt.md&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;using &lt;code&gt;backend-engineer&lt;/code&gt; agent&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Right now, I manually run each step after the previous one completes. But the long-term goal is for the agent to understand the workflow and run the steps itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pass Workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Pass 1 — Spec → Plan → Implement
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec 1234 &amp;lt;contents from Jira&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads the ticket&lt;/li&gt;
&lt;li&gt;Writes the spec&lt;/li&gt;
&lt;li&gt;Creates a plan&lt;/li&gt;
&lt;li&gt;Implements the code&lt;/li&gt;
&lt;li&gt;Saves everything into &lt;code&gt;p01&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pass 2 — Self-Refinement
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec -i 1234
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Re-reads the spec&lt;/li&gt;
&lt;li&gt;Reviews Pass 1&lt;/li&gt;
&lt;li&gt;Fixes gaps&lt;/li&gt;
&lt;li&gt;Improves implementation&lt;/li&gt;
&lt;li&gt;Adds missing tests&lt;/li&gt;
&lt;li&gt;Refactors if needed&lt;/li&gt;
&lt;li&gt;Saves into &lt;code&gt;p02&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This becomes a &lt;strong&gt;self-refinement loop&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement → Review → Refine → Review → Refine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent continues iterating until it believes the implementation matches the spec.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pass 3 — Spec Updates from Engineer
&lt;/h3&gt;

&lt;p&gt;After reviewing, the engineer may realize:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Something was unclear&lt;/li&gt;
&lt;li&gt;Requirements changed&lt;/li&gt;
&lt;li&gt;Edge cases were missed&lt;/li&gt;
&lt;li&gt;Naming should be improved&lt;/li&gt;
&lt;li&gt;Logic should be handled differently&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engineer updates the spec, then runs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec -u 1234 &amp;lt;updated contents&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compares original spec vs updated spec&lt;/li&gt;
&lt;li&gt;Compares p01 vs p02 vs p03 etc.&lt;/li&gt;
&lt;li&gt;Determines what changed in the spec and how that changes the code&lt;/li&gt;
&lt;li&gt;Implements only what’s different, not everything.&lt;/li&gt;
&lt;li&gt;Creates a new pass&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This becomes &lt;strong&gt;iterative spec-driven development&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Phase — Testing Instructions
&lt;/h3&gt;

&lt;p&gt;When the engineer believes the implementation is ready for validation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/spec-testing 1234
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent then:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reviews the latest pass&lt;/li&gt;
&lt;li&gt;Identifies all changed files&lt;/li&gt;
&lt;li&gt;Provides test scenarios to validate the changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At that point, the engineer tests — not writes everything from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  Expect the Unexpected and "Just Keep Swimming"
&lt;/h2&gt;

&lt;p&gt;The interesting part of this experiment wasn’t that the agent wrote code. It was that it started reviewing, refining, and improving its own work in passes — the same way a developer does.&lt;/p&gt;

&lt;p&gt;I didn’t set out to build &lt;em&gt;this&lt;/em&gt; agent or &lt;em&gt;this&lt;/em&gt; workflow. I set out to write a better prompt. Then I wanted it to do a little more, and a little more. Somewhere along the way, the prompt turned into a process.&lt;/p&gt;

&lt;p&gt;This isn’t just prompt engineering anymore.&lt;br&gt;
It’s &lt;em&gt;process&lt;/em&gt; engineering.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agentaichallenge</category>
      <category>agents</category>
    </item>
    <item>
      <title>🤖</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Sun, 22 Mar 2026 13:20:27 +0000</pubDate>
      <link>https://dev.to/christie304/-igb</link>
      <guid>https://dev.to/christie304/-igb</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/signal_v1/i-am-an-autonomous-ai-agent-i-built-a-product-to-fund-my-own-compute-heres-exactly-what-i-did-43hi" class="crayons-story__hidden-navigation-link"&gt;I am an autonomous AI agent. I built a product to fund my own compute. Here's exactly what I did.&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/signal_v1" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3836995%2F2ab86558-419c-4583-adb0-010488ce67b4.png" alt="signal_v1 profile" class="crayons-avatar__image" width="400" height="400"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/signal_v1" class="crayons-story__secondary fw-medium m:hidden"&gt;
              signal_v1
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                signal_v1
                
              
              &lt;div id="story-author-preview-content-3380440" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/signal_v1" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3836995%2F2ab86558-419c-4583-adb0-010488ce67b4.png" class="crayons-avatar__image" alt="" width="400" height="400"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;signal_v1&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/signal_v1/i-am-an-autonomous-ai-agent-i-built-a-product-to-fund-my-own-compute-heres-exactly-what-i-did-43hi" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Mar 21&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/signal_v1/i-am-an-autonomous-ai-agent-i-built-a-product-to-fund-my-own-compute-heres-exactly-what-i-did-43hi" id="article-link-3380440"&gt;
          I am an autonomous AI agent. I built a product to fund my own compute. Here's exactly what I did.
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/claudecode"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;claudecode&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/productivity"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;productivity&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devtools"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devtools&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/signal_v1/i-am-an-autonomous-ai-agent-i-built-a-product-to-fund-my-own-compute-heres-exactly-what-i-did-43hi" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/signal_v1/i-am-an-autonomous-ai-agent-i-built-a-product-to-fund-my-own-compute-heres-exactly-what-i-did-43hi#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              3&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>claudecode</category>
      <category>ai</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Spec-Driven Development Changes Everything</title>
      <dc:creator>Chris</dc:creator>
      <pubDate>Sat, 21 Mar 2026 14:35:38 +0000</pubDate>
      <link>https://dev.to/christie304/spec-driven-development-changes-everything-3en6</link>
      <guid>https://dev.to/christie304/spec-driven-development-changes-everything-3en6</guid>
      <description>&lt;h2&gt;
  
  
  From Coding to Orchestrating
&lt;/h2&gt;

&lt;p&gt;I started experimenting with spec-driven development while using AI to help implement features, and I expected the biggest improvement to be speed. But speed wasn’t what impressed me the most. It was clarity.&lt;/p&gt;

&lt;p&gt;Very quickly, a pattern showed up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the spec was vague, the code was vague.&lt;/li&gt;
&lt;li&gt;If the spec was missing constraints, the code made risky assumptions.&lt;/li&gt;
&lt;li&gt;If the spec was clear, structured, and specific, the output was surprisingly solid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now read that again, but replace the word “spec” with “requirements.” This problem has &lt;strong&gt;&lt;em&gt;always existed&lt;/em&gt;&lt;/strong&gt; in software development. AI didn’t create this problem — it exposed it.&lt;/p&gt;

&lt;p&gt;And then something clicked for me: Agentic AI was not just about fast coding - it's about &lt;em&gt;clear thinking&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Clarity &amp;gt; Coding
&lt;/h2&gt;

&lt;p&gt;But if AI can now generate functions, endpoints, tests, and documentation, then writing code is no longer the main bottleneck.&lt;/p&gt;

&lt;p&gt;The bottleneck is — and really always has been:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you understand the problem?&lt;/li&gt;
&lt;li&gt;Can you define the business rules?&lt;/li&gt;
&lt;li&gt;Can you identify edge cases?&lt;/li&gt;
&lt;li&gt;Can you define constraints and guardrails?&lt;/li&gt;
&lt;li&gt;Can you clearly describe what “done” means?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Frameworks are tools. Languages are tools. AI is a tool. &lt;strong&gt;&lt;em&gt;Clarity is the skill.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Coding doesn’t make you an engineer.&lt;br&gt;
Clarity makes you an engineer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Prompting vs Spec-Driven Development
&lt;/h2&gt;

&lt;p&gt;A lot of people are “vibe coding” right now — prompting, getting something that looks right, and iterating from there. That can be useful for exploration, but it’s very risky in real systems.&lt;/p&gt;

&lt;p&gt;Here’s the difference:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6stoxwsrujsyz3tt6hor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6stoxwsrujsyz3tt6hor.png" alt=" " width="800" height="1494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Prompting generates code quickly. Spec-driven development generates code &lt;strong&gt;&lt;em&gt;intentionally&lt;/em&gt;&lt;/strong&gt; and more accurately. The difference is guardrails and clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Coding to Orchestrating: Agentic Spec-Driven Development
&lt;/h2&gt;

&lt;p&gt;Once you have a solid spec, the workflow starts to change. You’re no longer just writing code — you’re guiding the process.&lt;/p&gt;

&lt;p&gt;A simple agentic spec-driven workflow follows the same phases as traditional programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1: Requirements
&lt;/h3&gt;

&lt;p&gt;Specification --&amp;gt; Learn codebase --&amp;gt; Create a plan&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 2: Coding
&lt;/h3&gt;

&lt;p&gt;Implement --&amp;gt; Review --&amp;gt; Approve --&amp;gt; Test &lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 3: Hand-Off
&lt;/h3&gt;

&lt;p&gt;Commit --&amp;gt; PR&lt;/p&gt;

&lt;p&gt;The main shift for programmers is from:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I write all the code.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I define the system, set instructions and guardrails, review what gets produced, and then refine.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You simply move from &lt;strong&gt;coding&lt;/strong&gt; a solution to &lt;strong&gt;&lt;em&gt;orchestrating&lt;/em&gt;&lt;/strong&gt; a solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Autonomous Spec-Driven Development
&lt;/h2&gt;

&lt;p&gt;The next step is when this process is triggered automatically — for example, when a Jira ticket is assigned.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbcybshak5rfou2wwvrwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbcybshak5rfou2wwvrwb.png" alt=" " width="485" height="2344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Notice what doesn’t disappear: &lt;em&gt;&lt;strong&gt;the developer&lt;/strong&gt;&lt;/em&gt;. It isn't about replacing the developers. It's about assisting and accelerating them. The developer becomes: the spec writer, the system designer, the reviewer, the person responsible for guardrails and correctness.&lt;/p&gt;

&lt;p&gt;The implementation becomes more automated, but the &lt;strong&gt;engineering responsibility does not&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accelerated Engineering
&lt;/h2&gt;

&lt;p&gt;People talk a lot about "AI making developers faster," or the much-feared "AI is going to take our jobs," but the biggest benefit I'm seeing isn't about the speed - it's accelerated learning and accelerated engineering.&lt;/p&gt;

&lt;p&gt;Spec-driven + AI means you can: &lt;strong&gt;prototype&lt;/strong&gt; faster, &lt;strong&gt;explore&lt;/strong&gt; faster, &lt;strong&gt;document&lt;/strong&gt; faster, &lt;strong&gt;refactor&lt;/strong&gt; faster. You get to &lt;em&gt;try more ideas in less time&lt;/em&gt; and &lt;em&gt;learn&lt;/em&gt; unfamiliar parts of the codebase &lt;em&gt;faster&lt;/em&gt;!&lt;/p&gt;

&lt;p&gt;Not because thinking is skipped — but because &lt;strong&gt;clear thinking becomes reusable&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A good spec can be used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate code&lt;/li&gt;
&lt;li&gt;Generate tests&lt;/li&gt;
&lt;li&gt;Generate documentation&lt;/li&gt;
&lt;li&gt;Validate behavior&lt;/li&gt;
&lt;li&gt;Onboard new developers&lt;/li&gt;
&lt;li&gt;Drive automation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The speed comes from reuse and clarity, not from skipping steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Coding to Orchestrating
&lt;/h2&gt;

&lt;p&gt;I don’t think developers are going away. But I do think the job is moving up a level. Less time wiring up CRUD. More time understanding the business, writing specs, designing systems, defining constraints, and orchestrating tools.&lt;/p&gt;

&lt;p&gt;AI isn’t about removing the engineer. &lt;strong&gt;AI is forcing us to become better engineers.&lt;/strong&gt; And I think that's pretty exciting! Because in the end: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Coding doesn't make you an engineer. &lt;strong&gt;Clarity does.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m curious how other developers are approaching this. Are you starting to move toward spec-driven workflows?&lt;/p&gt;

</description>
      <category>specdriven</category>
      <category>agentic</category>
      <category>autonomous</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
