<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Edra Grey · Field Notes</title><description>Field notes on building with AI: agents, automation, AI video, and vibe coding. Real workflows, shown step by step.</description><link>https://edragrey.com/</link><language>en</language><item><title>A Token Scoped To One Client Can&apos;t Touch Another&apos;s Queue</title><link>https://edragrey.com/tutorials/scoped-tokens-cant-cross-projects/</link><guid isPermaLink="true">https://edragrey.com/tutorials/scoped-tokens-cant-cross-projects/</guid><description>I pointed one client&apos;s API token at a different client&apos;s queue in production and got a clean 403. The exact schema, the audit that ran before the feature did, and the moment my own tool refused a shortcut I tried to take.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><category>build</category><category>security</category><category>agents</category><category>claude-code</category></item><item><title>My agent published a page before its image existed</title><link>https://edragrey.com/tutorials/agent-publishing-one-atomic-commit/</link><guid isPermaLink="true">https://edragrey.com/tutorials/agent-publishing-one-atomic-commit/</guid><description>When an agent publishes by committing to git, every separate write is its own commit, and on Vercel every commit is its own deploy. That is how an article went live for a minute pointing at a hero image that 404&apos;d. The fix is one atomic commit.</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate><category>agents</category><category>automation</category><category>git</category><category>github</category><category>vercel</category></item><item><title>My scheduled agents ran old code for days and never told me</title><link>https://edragrey.com/tutorials/agents-ran-stale-code-for-days/</link><guid isPermaLink="true">https://edragrey.com/tutorials/agents-ran-stale-code-for-days/</guid><description>A stale git lock froze the checkout my Cowork tasks run from. Every scheduled agent kept running ten commits behind, reported success, and said nothing. Here is the silent freeze and the sync script that ends it.</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate><category>agents</category><category>automation</category><category>git</category><category>claude-code</category><category>scheduled-tasks</category></item><item><title>The Context System That Stops Claude From Drifting</title><link>https://edragrey.com/tutorials/context-system-that-stops-claude-drifting/</link><guid isPermaLink="true">https://edragrey.com/tutorials/context-system-that-stops-claude-drifting/</guid><description>By week three the agent forgets every decision you made. It&apos;s not the AI — your project has no memory. The files that live in the repo and keep the agent in line, from my real setup.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>ai</category><category>claude-code</category></item><item><title>I Translated My Whole Site in One Claude Code Run</title><link>https://edragrey.com/tutorials/translate-your-whole-site-in-one-run/</link><guid isPermaLink="true">https://edragrey.com/tutorials/translate-your-whole-site-in-one-run/</guid><description>Adding a new language to 18 articles by hand is a day of copy-translate-paste. I did it in one run: one agent per page, in parallel. The catch is the one file you must never let them touch.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>agents</category><category>claude-code</category></item><item><title>My Blog Is a Folder of Markdown a Robot Writes</title><link>https://edragrey.com/tutorials/blog-as-a-folder-of-markdown/</link><guid isPermaLink="true">https://edragrey.com/tutorials/blog-as-a-folder-of-markdown/</guid><description>I stopped hand-building pages for the site. Now a draft lands as a markdown file, I read it behind a login, and one click commits it live. Here&apos;s the shape that made it work.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>writing</category><category>astro</category><category>agents</category></item><item><title>AI picks the story. I keep the pen.</title><link>https://edragrey.com/tutorials/let-agents-draft-keep-the-publish-button/</link><guid isPermaLink="true">https://edragrey.com/tutorials/let-agents-draft-keep-the-publish-button/</guid><description>A scheduled agent reads everything I ship and tells me what is worth writing about. I do the writing and the editing. Publishing stays a button only I press.</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate><category>agents</category><category>automation</category><category>content</category><category>workflow</category><category>claude-code</category></item><item><title>A 3D Hero With React Three Fiber</title><link>https://edragrey.com/tutorials/3d-hero-with-react-three-fiber/</link><guid isPermaLink="true">https://edragrey.com/tutorials/3d-hero-with-react-three-fiber/</guid><description>A spinning, branded 3D hero, built in minutes by describing it. The thing that used to gate 3D on the web was the boilerplate, not the math, and AI deleted it. Three.js, React Three Fiber, and Claude, step by step.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>vibe-coding</category><category>react</category><category>3d</category></item><item><title>How I Use Obsidian as My AI&apos;s Memory</title><link>https://edragrey.com/tutorials/how-i-use-obsidian/</link><guid isPermaLink="true">https://edragrey.com/tutorials/how-i-use-obsidian/</guid><description>My notes aren&apos;t for rereading. They&apos;re the memory my AI works from: a plain-markdown vault Claude Code reads at the start of every session and writes back at the end.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>obsidian</category><category>knowledge</category><category>claude-code</category></item><item><title>How I Use Wispr Flow Every Day</title><link>https://edragrey.com/tutorials/how-i-use-wispr-flow/</link><guid isPermaLink="true">https://edragrey.com/tutorials/how-i-use-wispr-flow/</guid><description>Voice dictation that replaced typing for almost everything I write: prompts, notes, messages. Hold one key and talk. The honest version, including where it doesn&apos;t work.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>workflow</category><category>voice</category><category>dictation</category><category>tools</category></item><item><title>Make Your Agent Run on a Schedule</title><link>https://edragrey.com/tutorials/schedule-your-agent/</link><guid isPermaLink="true">https://edragrey.com/tutorials/schedule-your-agent/</guid><description>The self-running version of an agent task isn&apos;t more code. It&apos;s the same task dropped into a scheduled task: a clock fires it, it does the work while you sleep, and a final step delivers the result.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>automation</category><category>agents</category><category>claude-code</category><category>scheduling</category></item><item><title>Your First Automation With n8n</title><link>https://edragrey.com/tutorials/first-n8n-automation/</link><guid isPermaLink="true">https://edragrey.com/tutorials/first-n8n-automation/</guid><description>Someone fills out your site&apos;s form and, a second later, Telegram pings you with their details. Two nodes in n8n, a webhook and a message, with step-by-step screenshots.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>automation</category><category>n8n</category><category>webhooks</category></item><item><title>A Job Scout With Agents in Claude Code</title><link>https://edragrey.com/tutorials/job-scout-with-agents/</link><guid isPermaLink="true">https://edragrey.com/tutorials/job-scout-with-agents/</guid><description>An agent that checks several job boards, drops what doesn&apos;t fit, removes duplicates, and leaves you a table of the good ones. You hand it the task once and it does it on its own.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>agents</category><category>claude-code</category></item><item><title>Pull Data Off a Web Page Into JSON</title><link>https://edragrey.com/tutorials/scrape-web-to-json/</link><guid isPermaLink="true">https://edragrey.com/tutorials/scrape-web-to-json/</guid><description>A page full of messy data, a clean JSON file with only what you wanted. No scraper to write: you describe it to Firecrawl and it returns it structured.</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate><category>data</category><category>firecrawl</category><category>scraping</category></item><item><title>A Landing Page With AI, Online in an Afternoon</title><link>https://edragrey.com/tutorials/landing-page-with-ai/</link><guid isPermaLink="true">https://edragrey.com/tutorials/landing-page-with-ai/</guid><description>A real website, on a real URL, built in an afternoon with Astro, Claude Code, and Vercel. You don&apos;t code it: you describe it and Claude builds it. From zero to online, step by step.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>vibe-coding</category><category>astro</category><category>claude-code</category></item><item><title>Connect Your First MCP to Claude Code</title><link>https://edragrey.com/tutorials/connect-an-mcp/</link><guid isPermaLink="true">https://edragrey.com/tutorials/connect-an-mcp/</guid><description>An MCP gives Claude Code new tools from other services (Notion, your database, the web) without you coding the connection. How to connect your first one with one line.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>ai</category><category>mcp</category><category>claude-code</category></item><item><title>Your First API Key, Without Leaking It</title><link>https://edragrey.com/tutorials/protect-api-keys/</link><guid isPermaLink="true">https://edragrey.com/tutorials/protect-api-keys/</guid><description>Pasting an API key into your code and pushing it to GitHub can drain your balance in minutes. The right way with a .env file and .gitignore, and what to do if you already leaked one.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>security</category><category>api-keys</category></item><item><title>Git and GitHub From Scratch</title><link>https://edragrey.com/tutorials/git-github/</link><guid isPermaLink="true">https://edragrey.com/tutorials/git-github/</guid><description>You built something with AI and want to save it and put it online, but you&apos;ve never used git. Install it, set your identity, and push your first repo with one line.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>git</category><category>github</category></item><item><title>Install Claude Code</title><link>https://edragrey.com/tutorials/install-claude-code/</link><guid isPermaLink="true">https://edragrey.com/tutorials/install-claude-code/</guid><description>Anthropic&apos;s AI agent that lives in your terminal and writes code with you. How to install and start it with one line, plus the two common snags when you begin.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>ai</category><category>claude-code</category></item><item><title>Install Homebrew on Your Mac</title><link>https://edragrey.com/tutorials/install-homebrew/</link><guid isPermaLink="true">https://edragrey.com/tutorials/install-homebrew/</guid><description>Almost every Mac dev tutorial assumes you have Homebrew. If your terminal says command not found: brew, here is the fix, with the PATH step almost everyone skips.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>tools</category><category>mac</category></item><item><title>Install Node.js on Your Mac</title><link>https://edragrey.com/tutorials/install-node/</link><guid isPermaLink="true">https://edragrey.com/tutorials/install-node/</guid><description>Loads of AI and dev tools need Node.js to run. If your terminal says command not found: node, here is the install and how to check it worked.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>tools</category><category>node</category></item><item><title>Six Fixes That Took My AI Ad From Basic to Broadcast</title><link>https://edragrey.com/tutorials/six-fixes-basic-to-broadcast/</link><guid isPermaLink="true">https://edragrey.com/tutorials/six-fixes-basic-to-broadcast/</guid><description>A blunt before and after. The six concrete changes that moved a code-rendered ad from flat and amateur to something that looks professional: sound, real icons, depth, transitions, a live UI, and camera motion.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><category>ai-video</category><category>motion-design</category></item><item><title>I Built a SaaS Video Ad in 30 Minutes With AI</title><link>https://edragrey.com/tutorials/ai-video-ad-in-30-minutes/</link><guid isPermaLink="true">https://edragrey.com/tutorials/ai-video-ad-in-30-minutes/</guid><description>A direct-response ad, scripted and rendered as code. How I went from a brand spec to a finished 9:16 reel using Claude and HyperFrames, no editing timeline involved.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>ai-video</category><category>vibe-coding</category></item><item><title>Install ffmpeg, the 2-Minute Fix</title><link>https://edragrey.com/tutorials/install-ffmpeg/</link><guid isPermaLink="true">https://edragrey.com/tutorials/install-ffmpeg/</guid><description>A lot of AI and video build tools assume you have ffmpeg. If your terminal says command not found, here is the two-minute fix for Mac, Windows, and Linux, with how to check it worked.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>setup</category><category>tools</category><category>ffmpeg</category></item></channel></rss>