[{"data":1,"prerenderedAt":970},["ShallowReactive",2],{"folio-writing-cmd":3,"folio-clipboard-cmd":66,"cmd-works":71,"folio-page:\u002Fwriting\u002Fhow-i-work-with-agents-right-now":376},[4,15,25,34,43,52,59],{"path":5,"title":6,"description":7,"date":8,"tags":9,"readingMinutes":14},"\u002Fwriting\u002Fhow-i-work-with-agents-right-now","How I Work With Agents Right Now","Which agents I use in October 2026 and for what, the skills they share, and the few rules that keep them from acting in my name.","2026-10-12",[10,11,12,13],"agents","ai","workflow","open-source",9,{"path":16,"title":17,"description":18,"date":19,"tags":20,"readingMinutes":24},"\u002Fwriting\u002Fhow-a-tweet-changed-my-life","How a Tweet Changed My Life","From a layoff in Nice to Vercel in London, by way of Nuxt. The story of a tweet posted on a Tuesday morning in December, and of everything that made it work.","2026-09-02",[21,22,23,13],"career","personal","nuxt",14,{"path":26,"title":27,"description":28,"date":29,"tags":30,"readingMinutes":33},"\u002Fwriting\u002Ffrom-local-to-production-containerizing-your-nuxt-app","From Local to Production: Deploy the Latest Nuxt Stack with Docker","Learn how to properly containerize and deploy a Nuxt application using the latest versions of Nuxt UI and Content. Set up Docker with best practices, automate builds with GitHub Actions, and deploy your application anywhere.","2025-01-15",[23,31,32],"docker","devops",3,{"path":35,"title":36,"description":37,"date":38,"tags":39,"readingMinutes":33},"\u002Fwriting\u002Fhow-to-securely-share-environment-variables-with-your-team","How To Securely Share Environment Variables With Your Team","Learn how to avoid critical security risks in environment variable management and discover how Shelve provides a modern, secure solution for development teams.","2024-10-24",[40,41,42],"security","devtools","shelve",{"path":44,"title":45,"description":46,"date":47,"tags":48,"readingMinutes":51},"\u002Fwriting\u002Fhow-raycast-became-my-ultimate-sidekick","How Raycast Became My Ultimate Sidekick","Let me take you on a journey through the magical land of Raycast – an app that has completely revolutionized my workflow and made me wonder how I ever survived without it.","2024-03-05",[49,50,41],"productivity","raycast",5,{"path":53,"title":54,"description":55,"date":56,"tags":57,"readingMinutes":58},"\u002Fwriting\u002F5-amazing-raycast-nuxt-snippets","5 Amazing Raycast Snippets for Enhancing Your Nuxt (Vue) Projects","Discover 5 powerful Raycast snippets that can transform your Nuxt and Vue development workflow, saving time and enhancing productivity.","2024-01-22",[23,50,49],4,{"path":60,"title":61,"description":62,"date":63,"tags":64,"readingMinutes":65},"\u002Fwriting\u002Fnot-an-impostor","You are not an impostor","Your story is worth telling, and you are not alone in this journey. Here's how to overcome the trap of perfection and embrace your authenticity.","2024-01-11",[21,22],2,[67],{"path":68,"title":69,"date":70},"\u002Fclipboard\u002F2026-04-07","Clipboard #1","2026-04-07",[72,89,102,114,127,141,153,167,178,189,202,213,224,236,249,261,273,283,294,305,317,328,341,352,364],{"id":73,"category":74,"date":75,"description":76,"extension":77,"github":78,"meta":79,"name":80,"release":81,"screenshotOptions":81,"screenshotUrl":82,"stem":83,"tags":84,"url":87,"__hash__":88},"works\u002F1.works\u002Fpersonal-agent-template.json","ecosystem","2026-06-11","Open-source template for a durable personal AI agent — web chat, Slack, Linear, and long-term memory","json","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fpersonal-agent-template",{},"Personal Agent Template",null,"\u002Fworks\u002Fpersonal-agent-template.png","1.works\u002Fpersonal-agent-template",[11,23,85,13,86],"vercel","eve","https:\u002F\u002Fpersonal-agent-template.vercel.app","3t1pnE1i1jK5p6Vt_9XeCCod6IHAMCdCfyJYX_M5ObY",{"id":90,"category":74,"date":91,"description":92,"extension":77,"github":93,"meta":94,"name":95,"release":81,"screenshotOptions":81,"screenshotUrl":96,"stem":97,"tags":98,"url":100,"__hash__":101},"works\u002F1.works\u002Fnuxt-connect-starter.json","2026-06-10","Minimal Nuxt starter for Vercel Connect — OAuth integrations hub with GitHub and Linear","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fnuxt-connect-starter",{},"Nuxt Connect Starter","\u002Fworks\u002Fnuxt-connect-starter.png","1.works\u002Fnuxt-connect-starter",[23,85,13,99],"oauth","https:\u002F\u002Fnuxt-connect-starter.labs.vercel.dev","lFm-QEdUq_XJPQHwZKYhXgpQYkOFyfFdjApZ13qcuic",{"id":103,"category":22,"date":104,"description":105,"extension":77,"github":106,"meta":107,"name":108,"release":81,"screenshotOptions":81,"screenshotUrl":109,"stem":110,"tags":111,"url":106,"__hash__":113},"works\u002F1.works\u002Fnitro-imessage-agent.json","2026-05-04","Durable iMessage AI agent template built with Nitro","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fnitro-imessage-agent-template",{},"Nitro iMessage Agent","\u002Fworks\u002Fnitro-imessage-agent.png","1.works\u002Fnitro-imessage-agent",[112,11,85,13],"nitro","XXTOqNnhH7dve82jkRviC86qVaJvAh6QE6FKcVQJFog",{"id":115,"category":22,"date":116,"description":117,"extension":77,"github":118,"meta":119,"name":120,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":121,"tags":122,"url":125,"__hash__":126},"works\u002F1.works\u002Ff1-league.json","2026-03-07","F1 prediction league with friends","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Ff1-league",{},"F1 League","1.works\u002Ff1-league",[23,123,124],"nuxthub","game","https:\u002F\u002Ff1.hrcd.fr","um8s0_VM7dz3yWHfTN3lgizBE7PC5yPnkdwDcT8Uc5Q",{"id":128,"category":129,"date":130,"description":131,"extension":77,"github":132,"meta":133,"name":134,"release":81,"screenshotOptions":81,"screenshotUrl":135,"stem":136,"tags":137,"url":139,"__hash__":140},"works\u002F1.works\u002Fgithub-tools.json","featured","2026-02-21","AI SDK tools for GitHub","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fgithub-tools",{},"GitHub Tools","\u002Fworks\u002Fgithub-tools.png","1.works\u002Fgithub-tools",[138,11,13],"typescript","https:\u002F\u002Fgithub-tools.com","f-Hgnxt9cTlzbjLffkDOiKfkGD9iKSdaFifXryA7z6U",{"id":142,"category":129,"date":143,"description":144,"extension":77,"github":145,"meta":146,"name":147,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":148,"tags":149,"url":151,"__hash__":152},"works\u002F1.works\u002Fevlog.json","2026-01-24","Structured logging library for TypeScript","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fevlog",{},"Evlog","1.works\u002Fevlog",[138,150,13],"logging","https:\u002F\u002Fevlog.dev","OgBHoF1k8MXxo8mvj9M0i_5cBOfQaPbtUYAlYYw9KfA",{"id":154,"category":74,"date":155,"description":156,"extension":77,"github":157,"meta":158,"name":159,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":160,"tags":161,"url":165,"__hash__":166},"works\u002F1.works\u002Fcomark.json","2026-01-22","Streaming markdown parser with component support","https:\u002F\u002Fgithub.com\u002Fnuxtlabs\u002Fcomark",{},"Comark","1.works\u002Fcomark",[162,163,164,13],"markdown","vue","react","https:\u002F\u002Fcomark.dev","GK5AFpf3lBPvehlXKn986tmBcg3_Xmb_tKCEnnxpWTE",{"id":168,"category":74,"date":169,"description":170,"extension":77,"github":171,"meta":172,"name":173,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":174,"tags":175,"url":176,"__hash__":177},"works\u002F1.works\u002Fknowledge-agent.json","2026-01-20","File-system based AI agent template","https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fknowledge-agent-template",{},"Knowledge Agent","1.works\u002Fknowledge-agent",[11,23,85,13],"https:\u002F\u002Fchatsdk-knowledge-agent.vercel.app","tNQhHyfLCP5LYK6MVHx4pL8yuahjerz5yaQkOgG_-ZQ",{"id":179,"category":74,"date":180,"description":181,"extension":77,"github":182,"meta":183,"name":184,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":185,"tags":186,"url":187,"__hash__":188},"works\u002F1.works\u002Fnuxt-mcp-toolkit.json","2025-11-08","MCP server toolkit for Nuxt","https:\u002F\u002Fgithub.com\u002Fnuxt-modules\u002Fmcp-toolkit",{},"Nuxt MCP Toolkit","1.works\u002Fnuxt-mcp-toolkit",[23,11,13],"https:\u002F\u002Fmcp-toolkit.nuxt.dev","ULzM9IU6hg3LP3gBC5C-utumevGcfkrU6AtfAGm5ZRg",{"id":190,"category":22,"date":191,"description":192,"extension":77,"github":193,"meta":194,"name":195,"release":196,"screenshotOptions":81,"screenshotUrl":197,"stem":198,"tags":199,"url":200,"__hash__":201},"works\u002F1.works\u002Fnuxt-raycast-extension.json","2025-02-12","Raycast extension for Nuxt","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fnuxt-raycast-extension",{},"Nuxt Raycast Extension","2025","\u002Fworks\u002Fnuxt-raycast-extension.png","1.works\u002Fnuxt-raycast-extension",[23,41],"https:\u002F\u002Fwww.raycast.com\u002Fhugorcd\u002Fnuxt-ui","FSAuRTBxt3S7pt8cDONLqjQ4L61bDxRtSlWvY8fHsBI",{"id":203,"category":22,"date":204,"description":205,"extension":77,"github":206,"meta":207,"name":208,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":209,"tags":210,"url":211,"__hash__":212},"works\u002F1.works\u002Fnuppets.json","2025-02-07","Nuxt & Vue snippets hub","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fnuppets",{},"Nuppets","1.works\u002Fnuppets",[23,163,41],"https:\u002F\u002Fnuppets.dev","CLpZXSqC0wjCZPwL4aRs7Kot7neszICOHQSvDJjCWR8",{"id":214,"category":22,"date":215,"description":216,"extension":77,"github":217,"meta":218,"name":219,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":220,"tags":221,"url":217,"__hash__":223},"works\u002F1.works\u002Fnuxt-visitors.json","2025-01-28","Visitor tracking for Nuxt","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fnuxt-visitors",{},"Nuxt Visitors","1.works\u002Fnuxt-visitors",[23,222,13],"analytics","O6qC1kdHa3mU4lEBLbhjguCzayCOjI8SVRcC0OIQ9pQ",{"id":225,"category":22,"date":226,"description":227,"extension":77,"github":228,"meta":229,"name":230,"release":196,"screenshotOptions":81,"screenshotUrl":81,"stem":231,"tags":232,"url":234,"__hash__":235},"works\u002F1.works\u002Fnuxt-better-auth.json","2024-10-23","Better Auth demo for Nuxt","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fnuxt-better-auth",{},"Nuxt x Better Auth","1.works\u002Fnuxt-better-auth",[23,233],"auth","https:\u002F\u002Fbetter-auth.hrcd.fr\u002F","g_WffyMkhDPY6t-W4ZYxwG2U2JeCseaKHwsaDa8BqvE",{"id":237,"category":22,"date":238,"description":239,"extension":77,"github":240,"meta":241,"name":242,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":243,"tags":244,"url":247,"__hash__":248},"works\u002F1.works\u002Finkly.json","2024-08-28","Email signature generator","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Finkly",{},"Inkly","1.works\u002Finkly",[23,245,246],"design","template","https:\u002F\u002Finkly.email","AnWWSjjF8RYB8nkIo4vHvzj4_axbq04yDHgkatlZ5H8",{"id":250,"category":22,"date":251,"description":252,"extension":77,"github":253,"meta":254,"name":255,"release":256,"screenshotOptions":81,"screenshotUrl":257,"stem":258,"tags":259,"url":253,"__hash__":260},"works\u002F1.works\u002Feslint-config.json","2024-03-27","ESLint config for TS, Vue & Nuxt","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Feslint-config",{},"@hrcd\u002Feslint-config","2024","\u002Fworks\u002Feslint-config.png","1.works\u002Feslint-config",[138,41,13],"1kYYxHVQb0eW0Gj1LTSZlzFSI_LhFLSYoZGAolcGhqE",{"id":262,"category":129,"date":263,"description":264,"extension":77,"github":265,"meta":266,"name":267,"release":256,"screenshotOptions":81,"screenshotUrl":268,"stem":269,"tags":270,"url":271,"__hash__":272},"works\u002F1.works\u002Fshelve.json","2024-02-27","Environment variable manager","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fshelve",{},"Shelve","\u002Fworks\u002Fshelve.png","1.works\u002Fshelve",[138,41,13],"https:\u002F\u002Fshelve.cloud\u002F","-ZVZZG2zJoih8aWjgpEmy5frh9KIcgUUecZvOIyQNOQ",{"id":274,"category":129,"date":56,"description":275,"extension":77,"github":276,"meta":277,"name":278,"release":256,"screenshotOptions":81,"screenshotUrl":81,"stem":279,"tags":280,"url":281,"__hash__":282},"works\u002F1.works\u002Fhr-folio.json","My portfolio website","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fhr-folio",{},"HR Folio","1.works\u002Fhr-folio",[23,245,13],"\u002F","_5dNFqM90hBqX33lJmQbuLk5jhbua7IfFiipW4zPEa0",{"id":284,"category":22,"date":285,"description":286,"extension":77,"github":287,"meta":288,"name":289,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":290,"tags":291,"url":292,"__hash__":293},"works\u002F1.works\u002Fnuxtlog.json","2024-01-18","Changelog & blog template for Nuxt","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fnuxtlog",{},"Nuxtlog","1.works\u002Fnuxtlog",[23,246,13],"https:\u002F\u002Fnuxtlog.hrcd.fr","hRYTmi6-MNuc40ALzRCgV9fl_SOkfp1598AbF5kDg54",{"id":295,"category":22,"date":296,"description":297,"extension":77,"github":298,"meta":299,"name":300,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":301,"tags":302,"url":303,"__hash__":304},"works\u002F1.works\u002Fcurrencia.json","2023-11-13","Crypto tracker template","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fcurrencia",{},"Currencia","1.works\u002Fcurrencia",[23,246],"https:\u002F\u002Fcurrencia.hrcd.fr","ck83zD8-ETismCJrS1tmCyzVcfFKtOBNZ-gV2blgWmQ",{"id":306,"category":129,"date":307,"description":308,"extension":77,"github":309,"meta":310,"name":311,"release":256,"screenshotOptions":81,"screenshotUrl":312,"stem":313,"tags":314,"url":315,"__hash__":316},"works\u002F1.works\u002Fcanvas.json","2023-06-13","Minimal portfolio template","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fcanvas",{},"Canvas","\u002Fworks\u002Fcanvas.png","1.works\u002Fcanvas",[23,246,245],"https:\u002F\u002Fcanvas.hrcd.fr\u002F","AJiYTGR0eM5SBzAAwOVHNg_r3Ck8L9by0lG3qixR3UY",{"id":318,"category":22,"date":319,"description":320,"extension":77,"github":321,"meta":322,"name":323,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":324,"tags":325,"url":326,"__hash__":327},"works\u002F1.works\u002Fhelpr.json","2023-03-18","Automation tools for workflows","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fhelpr",{},"Helpr","1.works\u002Fhelpr",[23,41],"https:\u002F\u002Fhelpr.hrcd.fr","ryMPdPVL2PEjtWIUtvLBMgpY4rCeEzuj3L33GekmrrU",{"id":329,"category":22,"date":330,"description":331,"extension":77,"github":332,"meta":333,"name":334,"release":335,"screenshotOptions":336,"screenshotUrl":81,"stem":337,"tags":338,"url":339,"__hash__":340},"works\u002F1.works\u002Fmaison-hochard.json","2022-09-11","Design & development agency","https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fmaison-hochard",{},"Maison Hochard","2022",{"delay":51},"1.works\u002Fmaison-hochard",[245,23],"https:\u002F\u002Fmh.hrcd.fr\u002F","91eDnpBDR9JCpGLIAxiHNXRxfqeTcBnA4FHNauKJ5LA",{"id":342,"category":74,"date":343,"description":344,"extension":77,"github":345,"meta":346,"name":347,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":348,"tags":349,"url":350,"__hash__":351},"works\u002F1.works\u002Fnuxt.com.json","2022-01-31","The official Nuxt website","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fnuxt.com",{},"Nuxt.com","1.works\u002Fnuxt.com",[23,245,13],"https:\u002F\u002Fnuxt.com","2cJThN2gMyup6qwItkAYlwNcNmyzenp3cVw25Y5Rkyo",{"id":353,"category":74,"date":354,"description":355,"extension":77,"github":356,"meta":357,"name":358,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":359,"tags":360,"url":362,"__hash__":363},"works\u002F1.works\u002Fnuxt-ui.json","2021-11-16","UI library for Nuxt & Vue","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fui",{},"Nuxt UI","1.works\u002Fnuxt-ui",[163,23,361],"design-system","https:\u002F\u002Fui.nuxt.com","iGGFPi5C55m35yp7u7ix-NOwvhH-zGIn66u5Wk_wlhA",{"id":365,"category":74,"date":366,"description":367,"extension":77,"github":368,"meta":369,"name":370,"release":81,"screenshotOptions":81,"screenshotUrl":81,"stem":371,"tags":372,"url":374,"__hash__":375},"works\u002F1.works\u002Fdocus.json","2020-11-12","Documentation framework for Nuxt","https:\u002F\u002Fgithub.com\u002Fnuxt\u002Fdocus",{},"Docus","1.works\u002Fdocus",[23,373,13],"docs","https:\u002F\u002Fdocus.dev","VUKAqIniX8Qm6-sax0aehqRcWgAx04YX9oPZHG6JZg8",{"id":377,"title":6,"body":378,"date":8,"description":7,"extension":962,"image":81,"meta":963,"navigation":965,"path":5,"rawbody":966,"seo":967,"stem":968,"__hash__":969},"content\u002F2.writing\u002Fhow-i-work-with-agents-right-now.md",{"type":379,"value":380,"toc":951},"minimark",[381,385,389,392,397,413,452,455,459,478,507,528,532,535,547,577,594,605,608,612,615,639,650,657,697,700,703,707,720,755,758,770,777,781,796,799,805,808,811,816,823,838,842,845,862,866,869,872,906,912,929,934,938,941,944,947],[382,383,6],"h1",{"id":384},"how-i-work-with-agents-right-now",[386,387,388],"p",{},"About once a month, someone asks me which agent I use. Codex or Claude Code? Which model? What does my setup look like?",[386,390,391],{},"The honest answer is \"several, and it changes\". Here's what it looks like in October 2026. It isn't a recommendation, just what's on my machine, why it's there, and the few rules that held up.",[393,394,396],"h2",{"id":395},"why-i-use-so-many","Why I use so many",[386,398,399,400,407,408,412],{},"I work at ",[401,402,406],"a",{"href":403,"rel":404},"https:\u002F\u002Fvercel.com",[405],"nofollow","Vercel"," and spend a lot of my time on ",[401,409,411],{"href":350,"rel":410},[405],"Nuxt"," and its ecosystem. In both, a growing part of the job is agents: the ones developers code with, and the ones that run on their own.",[386,414,415,416,421,422,421,427,432,433,437,438,442,443,447,448,451],{},"That means checking that Nuxt works well with agents, whether a developer writes Nuxt with one or an agent writes it alone. It means building with what Vercel ships for agents, like the ",[401,417,420],{"href":418,"rel":419},"https:\u002F\u002Fai-sdk.dev",[405],"AI SDK",", ",[401,423,426],{"href":424,"rel":425},"https:\u002F\u002Fuseworkflow.dev",[405],"Workflow",[401,428,431],{"href":429,"rel":430},"https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox",[405],"Sandbox"," and ",[401,434,86],{"href":435,"rel":436},"https:\u002F\u002Feve.dev",[405],", and sending feedback on it. And it means my own open source, mostly ",[401,439,441],{"href":151,"rel":440},[405],"evlog"," and the ",[401,444,446],{"href":182,"rel":445},[405],"MCP Toolkit",", plus smaller packages like ",[401,449,134],{"href":139,"rel":450},[405],".",[386,453,454],{},"None of that works if I only know one agent. I have to use the ones people actually use, with the models they actually pick. So I try a lot, and I keep what earns its place.",[393,456,458],{"id":457},"the-terminal","The terminal",[386,460,461,466,467,472,473,477],{},[401,462,465],{"href":463,"rel":464},"https:\u002F\u002Fstarship.rs",[405],"Starship"," for the prompt: branch, runtime version, how long the last command took, and nothing more. ",[401,468,471],{"href":469,"rel":470},"https:\u002F\u002Fviteplus.dev",[405],"Vite+"," for global tools, agents included, so there are no more two copies of the same CLI fighting over my ",[474,475,476],"code",{},"PATH",":",[479,480,485],"pre",{"className":481,"code":482,"language":483,"meta":484,"style":484},"language-bash shiki shiki-themes github-light github-dark github-dark","vp install -g @openai\u002Fcodex@latest\n","bash","",[474,486,487],{"__ignoreMap":484},[488,489,492,496,500,504],"span",{"class":490,"line":491},"line",1,[488,493,495],{"class":494},"shcOC","vp",[488,497,499],{"class":498},"sfrk1"," install",[488,501,503],{"class":502},"suiK_"," -g",[488,505,506],{"class":498}," @openai\u002Fcodex@latest\n",[386,508,509,510,515,516,521,522,527],{},"And ",[401,511,514],{"href":512,"rel":513},"https:\u002F\u002Fwww.superlogical.com\u002Frex",[405],"Rex",", the new terminal from ",[401,517,520],{"href":518,"rel":519},"https:\u002F\u002Fwww.superlogical.com",[405],"Superlogical",", Mitchell Hashimoto's company, which I'm trying right now. It's instant, and when I quit and reopen it, my sessions are still there, which matters a lot with agents that run for a long time. Its ",[401,523,526],{"href":524,"rel":525},"https:\u002F\u002Fwww.superlogical.com\u002Frex\u002Fdocs\u002Fbuild\u002Fprogram-status",[405],"Program Status Protocol"," also lets an agent tell the terminal it's working, waiting for me or done.",[393,529,531],{"id":530},"the-orchestrators","The orchestrators",[386,533,534],{},"Strictly speaking, these aren't agents. They're where I run them: the app or CLI around the model, with its tools, its context and the loop. That's the part I actually choose.",[386,536,537,538,546],{},"When I'm building a feature, I still use ",[539,540,541],"strong",{},[401,542,545],{"href":543,"rel":544},"https:\u002F\u002Fcursor.com",[405],"Cursor",". I need an editor for that: see the generated code, move around the files, fix small things by hand. Ask mode is great for prototyping before I pick an approach.",[386,548,549,556,557,562,563,570,571,576],{},[539,550,551],{},[401,552,555],{"href":553,"rel":554},"https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fapp",[405],"Codex"," is what I'm testing most right now. The app is very well made, and its ",[401,558,561],{"href":559,"rel":560},"https:\u002F\u002Fwww.macstories.net\u002Fnotes\u002Fopenais-new-codex-app-has-the-best-computer-use-feature-ive-ever-tested\u002F",[405],"computer use"," is the best I've tried. I use ",[539,564,565],{},[401,566,569],{"href":567,"rel":568},"https:\u002F\u002Fclaude.com\u002Fclaude-code",[405],"Claude Code"," a little, with a subscription from the ",[401,572,575],{"href":573,"rel":574},"https:\u002F\u002Fclaude.com\u002Fopen-source-max",[405],"Claude for Open Source"," programme, mostly from Raycast.",[386,578,579,580,587,588,593],{},"Because ",[539,581,582],{},[401,583,586],{"href":584,"rel":585},"https:\u002F\u002Fwww.raycast.com\u002Fai",[405],"Raycast AI"," is where I spend most of my time. After almost five years of Raycast, it already matches my shortcuts and the way I think. When an idea comes up in Slack or I need a quick fix, I open a chat and start there. I won't spoil the rest, but something might be coming on ",[401,589,592],{"href":590,"rel":591},"https:\u002F\u002Fwww.youtube.com\u002F@raycastapp",[405],"Raycast's YouTube channel"," soon.",[386,595,596,597,604],{},"And when I'm already in the terminal, ",[539,598,599],{},[401,600,603],{"href":601,"rel":602},"https:\u002F\u002Ffx.sh",[405],"fx",". I press ⌘D to split the terminal, start fx in the new pane right next to what I'm doing, ask for what I need, and the agent is on it a few seconds later. It's minimal, it looks good, it's simple to use, and the connectors just work. It's just very practical.",[386,606,607],{},"So there's no single answer to \"which agent?\". It depends on the task, and on where I already am.",[393,609,611],{"id":610},"cleaning-up","Cleaning up",[386,613,614],{},"A few weeks ago I realised I had config files everywhere: one instruction file per tool, skills copied into a dozen folders, old rules contradicting newer ones, and folders left over from before the skills CLI. I no longer knew what my agents were reading.",[386,616,617,618,623,624,627,628,633,634,451],{},"So I deleted most of it and started again. I do that now and then, and I think it's worth doing. These files are real technical debt: a rule written for last year's model is still loaded into every request, and newer models need far less guidance than the ones we wrote it for. Anthropic ",[401,619,622],{"href":620,"rel":621},"https:\u002F\u002Fclaude.com\u002Fblog\u002Fthe-new-rules-of-context-engineering-for-claude-5-generation-models",[405],"removed over 80% of Claude Code's system prompt"," for its latest models, and found its own ",[474,625,626],{},"CLAUDE.md"," files and skills were overconstraining Claude, sometimes with rules that contradicted each other. An ",[401,629,632],{"href":630,"rel":631},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.11988",[405],"ETH Zurich study"," found that context files don't generally make agents more successful, and add over 20% to the cost. Addy Osmani makes a similar case in ",[401,635,638],{"href":636,"rel":637},"https:\u002F\u002Faddyosmani.com\u002Fblog\u002Fagents-md\u002F",[405],"Stop Using \u002Finit for AGENTS.md",[386,640,641,642,645,646,649],{},"What's left is one folder, ",[474,643,644],{},"~\u002F.agents",". It holds a single ",[474,647,648],{},"AGENTS.md"," with my rules, plus every skill, and it's the only place I edit. The rules file comes from a private git repo, so every change has a history.",[386,651,652,656],{},[401,653,648],{"href":654,"rel":655},"https:\u002F\u002Fagents.md",[405]," is the format most agents read now, but each tool looks for its instructions somewhere else. So instead of a copy per tool, each one points back to that file:",[479,658,660],{"className":481,"code":659,"language":483,"meta":484,"style":484},"~\u002F.claude\u002FCLAUDE.md   # Claude Code: one line, @~\u002F.agents\u002FAGENTS.md, which imports it\n~\u002F.codex\u002FAGENTS.md    # Codex: a symlink to ~\u002F.agents\u002FAGENTS.md\nCursor, Raycast       # one line in their user rules: \"read ~\u002F.agents\u002FAGENTS.md and follow it\"\n",[474,661,662,676,686],{"__ignoreMap":484},[488,663,664,668,672],{"class":490,"line":491},[488,665,667],{"class":666},"so5gQ","~",[488,669,671],{"class":670},"slsVL","\u002F.claude\u002FCLAUDE.md   ",[488,673,675],{"class":674},"sCsY4","# Claude Code: one line, @~\u002F.agents\u002FAGENTS.md, which imports it\n",[488,677,678,680,683],{"class":490,"line":65},[488,679,667],{"class":666},[488,681,682],{"class":670},"\u002F.codex\u002FAGENTS.md    ",[488,684,685],{"class":674},"# Codex: a symlink to ~\u002F.agents\u002FAGENTS.md\n",[488,687,688,691,694],{"class":490,"line":33},[488,689,690],{"class":494},"Cursor,",[488,692,693],{"class":498}," Raycast",[488,695,696],{"class":674},"       # one line in their user rules: \"read ~\u002F.agents\u002FAGENTS.md and follow it\"\n",[386,698,699],{},"I change a rule once, and every agent picks it up in its next session.",[386,701,702],{},"A Raycast automation runs every Monday to keep it that way. It updates third-party skills, flags broken links and duplicates, and over time shows me which skills I, or my agents, actually use.",[393,704,706],{"id":705},"skills","Skills",[386,708,709,710,713,714,719],{},"They live in ",[474,711,712],{},"~\u002F.agents\u002Fskills",", installed with the ",[401,715,718],{"href":716,"rel":717},"https:\u002F\u002Fskills.sh",[405],"skills CLI",", and come from two places.",[386,721,722,725,726,731,732,737,738,743,744,749,750,451],{},[539,723,724],{},"From the people who build the tools."," That's what I like most about the ",[401,727,730],{"href":728,"rel":729},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fintroducing-skills",[405],"open skills ecosystem",": the best skill for a library is usually written by its maintainers. I use pretty much all of ",[401,733,736],{"href":734,"rel":735},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills",[405],"Vercel's skills",", quite a few Nuxt ones, and the ",[401,739,742],{"href":740,"rel":741},"https:\u002F\u002Fevlog.dev\u002Fgetting-started\u002Fagent-skills",[405],"evlog skills",", since I wrote them. I also really like what ",[401,745,748],{"href":746,"rel":747},"https:\u002F\u002Femilkowal.ski",[405],"Emil Kowalski"," does with his ",[401,751,754],{"href":752,"rel":753},"https:\u002F\u002Fgithub.com\u002Femilkowalski\u002Fskill",[405],"design engineering skill",[386,756,757],{},"For me, that's what a skill is: taste in a file. How someone who knows a tool well would use it, written down so an agent can follow along.",[386,759,760,763,764,769],{},[539,761,762],{},"My own",", and there are a lot of them. Some are public in ",[401,765,768],{"href":766,"rel":767},"https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fhr-folio\u002Ftree\u002Fmain\u002Fskills",[405],"my portfolio repo",", most are private. The private ones I find most interesting are voice skills for X, mail, Slack and long-form, built from things I actually wrote. They're not there to write and publish for me. What I like is what they unlock. First, iterating: I can get a lot of versions of an idea, which inspires me far more than a blank page, as long as I don't just take what's offered. Then, stepping back. When you work alone, it's hard to look at what you're doing from the outside, and agents are very good at giving you that distance. And when a new model comes out, I give it the same early prompts, like a long-form post I'll never publish, just to see how it reacts. You get a real feel for each model, which ones you click with, and how far they've come since what you tried a year ago.",[386,771,772,773,776],{},"One detail: Claude Code gets one symlink per skill, not one for the whole folder, so the skills the Claude app writes into ",[474,774,775],{},"~\u002F.claude\u002Fskills"," don't leak into every other agent.",[393,778,780],{"id":779},"nothing-in-my-name","Nothing in my name",[386,782,783,784,789,790,795],{},"Agents acting on their own are fine. ",[401,785,788],{"href":786,"rel":787},"https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog",[405],"Evi"," maintains evlog, I'm testing ",[401,791,794],{"href":792,"rel":793},"https:\u002F\u002Fx.com\u002Fbot",[405],"Grok Bot"," for background work, and everyone can see an agent did it.",[386,797,798],{},"Local work is different. When I'm talking to an agent in an editor or a chat, anything it does on GitHub or Slack looks like it came from me. So the first rule is:",[800,801,802],"blockquote",{},[386,803,804],{},"Don't commit, push or post anything in my name unless I ask for it in the current conversation.",[386,806,807],{},"Agents prepare everything, then show it to me and stop. And \"commit\" doesn't mean \"push\".",[386,809,810],{},"When a PR goes out, the description starts with:",[800,812,813],{},[386,814,815],{},"Written by an AI agent on behalf of @HugoRCD. @HugoRCD has not reviewed it yet.",[386,817,818,819,822],{},"The middle of that line changes: \"following his spec\" if I wrote the spec, \"who shaped the solution\" if we worked out the design together, nothing if I only gave the task. A reviewer knows straight away whether it's a prompt turned into code or a design someone thought through. Once I've reviewed it, it becomes \"Written with an AI agent. Reviewed by @HugoRCD.\" No ",[474,820,821],{},"Co-Authored-By"," trailers, no footers.",[386,824,825,826,831,832,837],{},"A lot of this comes from ",[401,827,830],{"href":828,"rel":829},"https:\u002F\u002Froe.dev",[405],"Daniel Roe","'s ",[401,833,836],{"href":834,"rel":835},"https:\u002F\u002Froe.dev\u002Fblog\u002Fusing-ai-in-open-source",[405],"Using AI in open source",", which has aged very well: \"never let an LLM speak for you\" and \"never let an LLM think for you\".",[393,839,841],{"id":840},"amend-dont-push","Amend, don't push",[386,843,844],{},"I work in monorepos a lot, and many of them deploy several apps on Vercel. Every push can start a build per app, and with loose build settings it rebuilds apps the change never touched. An agent that pushes after every small fix turns one PR into dozens of builds, and you find out on the bill.",[386,846,847,848,851,852,855,856,861],{},"So my agents commit locally, amend as they go, and push once when it's ready, with ",[474,849,850],{},"--force-with-lease",", never ",[474,853,854],{},"--force",". For bigger tasks, I'd rather get ",[401,857,860],{"href":858,"rel":859},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpull-requests\u002Ftutorials\u002Fstack-code-changes-in-pull-requests",[405],"stacked PRs",": small layers that I, or another agent, can review one at a time.",[393,863,865],{"id":864},"show-me-dont-tell-me","Show me, don't tell me",[386,867,868],{},"This is where I want my setup to go next. It's only partly there today.",[386,870,871],{},"When an agent says it fixed something, I want to see it. Most of my review time goes into picturing what the agent already saw. So every PR should come with evidence that fits the change:",[873,874,875,882,888,894,900],"ul",{},[876,877,878,881],"li",{},[539,879,880],{},"UI:"," screenshots before and after, or a short video for an interaction.",[876,883,884,887],{},[539,885,886],{},"CLI:"," the real output of the same command, before and after.",[876,889,890,893],{},[539,891,892],{},"A feature or a proposal:"," the API it adds, written as the code someone would use, before any implementation.",[876,895,896,899],{},[539,897,898],{},"Anything else:"," a small HTML page comparing both versions, a diagram, a table.",[876,901,902,905],{},[539,903,904],{},"Always:"," a short ELI5 at the end.",[907,908],"link-card",{"description":909,"title":910,"url":911},"24 September 2026","Ending every PR with an ELI5","https:\u002F\u002Fx.com\u002Fhugorcd\u002Fstatus\u002F2103190158053151108",[386,913,914,915,918,919,922,923,928],{},"Some of it already works. ",[401,916,788],{"href":786,"rel":917},[405],", built on ",[401,920,86],{"href":435,"rel":921},[405],", captures production and the preview whenever it touches the docs, and puts both in the PR with ",[401,924,927],{"href":925,"rel":926},"https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fbefore-and-after",[405],"before-and-after"," from Vercel Labs. What I want now is for that to be what every agent in my setup does by default.",[907,930],{"description":931,"title":932,"url":933},"25 September 2026","Evi opening a PR with a before\u002Fafter","https:\u002F\u002Fx.com\u002Fhugorcd\u002Fstatus\u002F2103530137321189532",[393,935,937],{"id":936},"for-now","For now",[386,939,940],{},"So, Codex or Claude Code? Whichever fits what I'm doing, and the answer will keep changing. What lasts is everything around them: one file of rules, skills written by people with taste, and agents that show their work instead of describing it.",[386,942,943],{},"None of it makes agents smarter. It makes them predictable, and that's most of what I want: work I can trust without redoing it.",[386,945,946],{},"Keep it small, delete what you stop using, and look at it again when a new model lands. Ask me in six months and half of this will have changed. I hope so.",[948,949,950],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":484,"searchDepth":65,"depth":65,"links":952},[953,954,955,956,957,958,959,960,961],{"id":395,"depth":65,"text":396},{"id":457,"depth":65,"text":458},{"id":530,"depth":65,"text":531},{"id":610,"depth":65,"text":611},{"id":705,"depth":65,"text":706},{"id":779,"depth":65,"text":780},{"id":840,"depth":65,"text":841},{"id":864,"depth":65,"text":865},{"id":936,"depth":65,"text":937},"md",{"tags":964},[10,11,12,13],true,"---\ntitle: How I Work With Agents Right Now\ndate: 2026-10-12\ndescription: Which agents I use in October 2026 and for what, the skills they share, and the few rules that keep them from acting in my name.\ntags:\n  - agents\n  - ai\n  - workflow\n  - open-source\n---\n\n# How I Work With Agents Right Now\n\nAbout once a month, someone asks me which agent I use. Codex or Claude Code? Which model? What does my setup look like?\n\nThe honest answer is \"several, and it changes\". Here's what it looks like in October 2026. It isn't a recommendation, just what's on my machine, why it's there, and the few rules that held up.\n\n## Why I use so many\n\nI work at [Vercel](https:\u002F\u002Fvercel.com) and spend a lot of my time on [Nuxt](https:\u002F\u002Fnuxt.com) and its ecosystem. In both, a growing part of the job is agents: the ones developers code with, and the ones that run on their own.\n\nThat means checking that Nuxt works well with agents, whether a developer writes Nuxt with one or an agent writes it alone. It means building with what Vercel ships for agents, like the [AI SDK](https:\u002F\u002Fai-sdk.dev), [Workflow](https:\u002F\u002Fuseworkflow.dev), [Sandbox](https:\u002F\u002Fvercel.com\u002Fdocs\u002Fvercel-sandbox) and [eve](https:\u002F\u002Feve.dev), and sending feedback on it. And it means my own open source, mostly [evlog](https:\u002F\u002Fevlog.dev) and the [MCP Toolkit](https:\u002F\u002Fgithub.com\u002Fnuxt-modules\u002Fmcp-toolkit), plus smaller packages like [GitHub Tools](https:\u002F\u002Fgithub-tools.com).\n\nNone of that works if I only know one agent. I have to use the ones people actually use, with the models they actually pick. So I try a lot, and I keep what earns its place.\n\n## The terminal\n\n[Starship](https:\u002F\u002Fstarship.rs) for the prompt: branch, runtime version, how long the last command took, and nothing more. [Vite+](https:\u002F\u002Fviteplus.dev) for global tools, agents included, so there are no more two copies of the same CLI fighting over my `PATH`:\n\n```bash\nvp install -g @openai\u002Fcodex@latest\n```\n\nAnd [Rex](https:\u002F\u002Fwww.superlogical.com\u002Frex), the new terminal from [Superlogical](https:\u002F\u002Fwww.superlogical.com), Mitchell Hashimoto's company, which I'm trying right now. It's instant, and when I quit and reopen it, my sessions are still there, which matters a lot with agents that run for a long time. Its [Program Status Protocol](https:\u002F\u002Fwww.superlogical.com\u002Frex\u002Fdocs\u002Fbuild\u002Fprogram-status) also lets an agent tell the terminal it's working, waiting for me or done.\n\n## The orchestrators\n\nStrictly speaking, these aren't agents. They're where I run them: the app or CLI around the model, with its tools, its context and the loop. That's the part I actually choose.\n\nWhen I'm building a feature, I still use **[Cursor](https:\u002F\u002Fcursor.com)**. I need an editor for that: see the generated code, move around the files, fix small things by hand. Ask mode is great for prototyping before I pick an approach.\n\n**[Codex](https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fapp)** is what I'm testing most right now. The app is very well made, and its [computer use](https:\u002F\u002Fwww.macstories.net\u002Fnotes\u002Fopenais-new-codex-app-has-the-best-computer-use-feature-ive-ever-tested\u002F) is the best I've tried. I use **[Claude Code](https:\u002F\u002Fclaude.com\u002Fclaude-code)** a little, with a subscription from the [Claude for Open Source](https:\u002F\u002Fclaude.com\u002Fopen-source-max) programme, mostly from Raycast.\n\nBecause **[Raycast AI](https:\u002F\u002Fwww.raycast.com\u002Fai)** is where I spend most of my time. After almost five years of Raycast, it already matches my shortcuts and the way I think. When an idea comes up in Slack or I need a quick fix, I open a chat and start there. I won't spoil the rest, but something might be coming on [Raycast's YouTube channel](https:\u002F\u002Fwww.youtube.com\u002F@raycastapp) soon.\n\nAnd when I'm already in the terminal, **[fx](https:\u002F\u002Ffx.sh)**. I press ⌘D to split the terminal, start fx in the new pane right next to what I'm doing, ask for what I need, and the agent is on it a few seconds later. It's minimal, it looks good, it's simple to use, and the connectors just work. It's just very practical.\n\nSo there's no single answer to \"which agent?\". It depends on the task, and on where I already am.\n\n## Cleaning up\n\nA few weeks ago I realised I had config files everywhere: one instruction file per tool, skills copied into a dozen folders, old rules contradicting newer ones, and folders left over from before the skills CLI. I no longer knew what my agents were reading.\n\nSo I deleted most of it and started again. I do that now and then, and I think it's worth doing. These files are real technical debt: a rule written for last year's model is still loaded into every request, and newer models need far less guidance than the ones we wrote it for. Anthropic [removed over 80% of Claude Code's system prompt](https:\u002F\u002Fclaude.com\u002Fblog\u002Fthe-new-rules-of-context-engineering-for-claude-5-generation-models) for its latest models, and found its own `CLAUDE.md` files and skills were overconstraining Claude, sometimes with rules that contradicted each other. An [ETH Zurich study](https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.11988) found that context files don't generally make agents more successful, and add over 20% to the cost. Addy Osmani makes a similar case in [Stop Using \u002Finit for AGENTS.md](https:\u002F\u002Faddyosmani.com\u002Fblog\u002Fagents-md\u002F).\n\nWhat's left is one folder, `~\u002F.agents`. It holds a single `AGENTS.md` with my rules, plus every skill, and it's the only place I edit. The rules file comes from a private git repo, so every change has a history.\n\n[AGENTS.md](https:\u002F\u002Fagents.md) is the format most agents read now, but each tool looks for its instructions somewhere else. So instead of a copy per tool, each one points back to that file:\n\n```bash\n~\u002F.claude\u002FCLAUDE.md   # Claude Code: one line, @~\u002F.agents\u002FAGENTS.md, which imports it\n~\u002F.codex\u002FAGENTS.md    # Codex: a symlink to ~\u002F.agents\u002FAGENTS.md\nCursor, Raycast       # one line in their user rules: \"read ~\u002F.agents\u002FAGENTS.md and follow it\"\n```\n\nI change a rule once, and every agent picks it up in its next session.\n\nA Raycast automation runs every Monday to keep it that way. It updates third-party skills, flags broken links and duplicates, and over time shows me which skills I, or my agents, actually use.\n\n## Skills\n\nThey live in `~\u002F.agents\u002Fskills`, installed with the [skills CLI](https:\u002F\u002Fskills.sh), and come from two places.\n\n**From the people who build the tools.** That's what I like most about the [open skills ecosystem](https:\u002F\u002Fvercel.com\u002Fblog\u002Fintroducing-skills): the best skill for a library is usually written by its maintainers. I use pretty much all of [Vercel's skills](https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-skills), quite a few Nuxt ones, and the [evlog skills](https:\u002F\u002Fevlog.dev\u002Fgetting-started\u002Fagent-skills), since I wrote them. I also really like what [Emil Kowalski](https:\u002F\u002Femilkowal.ski) does with his [design engineering skill](https:\u002F\u002Fgithub.com\u002Femilkowalski\u002Fskill).\n\nFor me, that's what a skill is: taste in a file. How someone who knows a tool well would use it, written down so an agent can follow along.\n\n**My own**, and there are a lot of them. Some are public in [my portfolio repo](https:\u002F\u002Fgithub.com\u002FHugoRCD\u002Fhr-folio\u002Ftree\u002Fmain\u002Fskills), most are private. The private ones I find most interesting are voice skills for X, mail, Slack and long-form, built from things I actually wrote. They're not there to write and publish for me. What I like is what they unlock. First, iterating: I can get a lot of versions of an idea, which inspires me far more than a blank page, as long as I don't just take what's offered. Then, stepping back. When you work alone, it's hard to look at what you're doing from the outside, and agents are very good at giving you that distance. And when a new model comes out, I give it the same early prompts, like a long-form post I'll never publish, just to see how it reacts. You get a real feel for each model, which ones you click with, and how far they've come since what you tried a year ago.\n\nOne detail: Claude Code gets one symlink per skill, not one for the whole folder, so the skills the Claude app writes into `~\u002F.claude\u002Fskills` don't leak into every other agent.\n\n## Nothing in my name\n\nAgents acting on their own are fine. [Evi](https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog) maintains evlog, I'm testing [Grok Bot](https:\u002F\u002Fx.com\u002Fbot) for background work, and everyone can see an agent did it.\n\nLocal work is different. When I'm talking to an agent in an editor or a chat, anything it does on GitHub or Slack looks like it came from me. So the first rule is:\n\n> Don't commit, push or post anything in my name unless I ask for it in the current conversation.\n\nAgents prepare everything, then show it to me and stop. And \"commit\" doesn't mean \"push\".\n\nWhen a PR goes out, the description starts with:\n\n> Written by an AI agent on behalf of @HugoRCD. @HugoRCD has not reviewed it yet.\n\nThe middle of that line changes: \"following his spec\" if I wrote the spec, \"who shaped the solution\" if we worked out the design together, nothing if I only gave the task. A reviewer knows straight away whether it's a prompt turned into code or a design someone thought through. Once I've reviewed it, it becomes \"Written with an AI agent. Reviewed by @HugoRCD.\" No `Co-Authored-By` trailers, no footers.\n\nA lot of this comes from [Daniel Roe](https:\u002F\u002Froe.dev)'s [Using AI in open source](https:\u002F\u002Froe.dev\u002Fblog\u002Fusing-ai-in-open-source), which has aged very well: \"never let an LLM speak for you\" and \"never let an LLM think for you\".\n\n## Amend, don't push\n\nI work in monorepos a lot, and many of them deploy several apps on Vercel. Every push can start a build per app, and with loose build settings it rebuilds apps the change never touched. An agent that pushes after every small fix turns one PR into dozens of builds, and you find out on the bill.\n\nSo my agents commit locally, amend as they go, and push once when it's ready, with `--force-with-lease`, never `--force`. For bigger tasks, I'd rather get [stacked PRs](https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpull-requests\u002Ftutorials\u002Fstack-code-changes-in-pull-requests): small layers that I, or another agent, can review one at a time.\n\n## Show me, don't tell me\n\nThis is where I want my setup to go next. It's only partly there today.\n\nWhen an agent says it fixed something, I want to see it. Most of my review time goes into picturing what the agent already saw. So every PR should come with evidence that fits the change:\n\n- **UI:** screenshots before and after, or a short video for an interaction.\n- **CLI:** the real output of the same command, before and after.\n- **A feature or a proposal:** the API it adds, written as the code someone would use, before any implementation.\n- **Anything else:** a small HTML page comparing both versions, a diagram, a table.\n- **Always:** a short ELI5 at the end.\n\n:link-card{description=\"24 September 2026\" title=\"Ending every PR with an ELI5\" url=\"https:\u002F\u002Fx.com\u002Fhugorcd\u002Fstatus\u002F2103190158053151108\"}\n\nSome of it already works. [Evi](https:\u002F\u002Fgithub.com\u002Fevloghq\u002Fevlog), built on [eve](https:\u002F\u002Feve.dev), captures production and the preview whenever it touches the docs, and puts both in the PR with [before-and-after](https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fbefore-and-after) from Vercel Labs. What I want now is for that to be what every agent in my setup does by default.\n\n:link-card{description=\"25 September 2026\" title=\"Evi opening a PR with a before\u002Fafter\" url=\"https:\u002F\u002Fx.com\u002Fhugorcd\u002Fstatus\u002F2103530137321189532\"}\n\n## For now\n\nSo, Codex or Claude Code? Whichever fits what I'm doing, and the answer will keep changing. What lasts is everything around them: one file of rules, skills written by people with taste, and agents that show their work instead of describing it.\n\nNone of it makes agents smarter. It makes them predictable, and that's most of what I want: work I can trust without redoing it.\n\nKeep it small, delete what you stop using, and look at it again when a new model lands. Ask me in six months and half of this will have changed. I hope so.\n",{"title":6,"description":7},"2.writing\u002Fhow-i-work-with-agents-right-now","6WT6F501Q0_cJ6vqbUkMNiDgZChfV3BCa6bb2GDNrSk",1791845519609]