[{"data":1,"prerenderedAt":116},["ShallowReactive",2],{"projects-en":3},{"items":4,"translated":62},[5,74],{"id":6,"title":7,"body":8,"cover":58,"demo":58,"description":59,"draft":60,"extension":61,"featured":62,"meta":63,"navigation":62,"order":64,"path":65,"repo":66,"seo":67,"stem":68,"tags":69,"video":58,"__hash__":73},"projects_en\u002Fprojects\u002Fclaude-automation.md","Dev automation scripts",{"type":9,"value":10,"toc":52},"minimark",[11,15,18,23,42,45,49],[12,13,14],"p",{},"Every Monday I was reconstructing my own week from memory — which pull requests I opened, which\nreviews I left, what I actually shipped. It is a bad use of a morning, and I was consistently\nunderselling the work because I had forgotten half of it.",[12,16,17],{},"So I stopped reconstructing it and started collecting it.",[19,20,22],"h2",{"id":21},"what-it-does","What it does",[12,24,25,29,30,33,34,37,38,41],{},[26,27,28],"code",{},"work_tracker.py"," pulls every pull request I opened that week plus the reviews I left, and\nwrites them into a Notion page in my work tracker. ",[26,31,32],{},"standup.py"," turns the same data into\nsomething I can paste into Slack. Two more scripts, ",[26,35,36],{},"explain-diff"," and ",[26,39,40],{},"explain-topic",", use\nClaude Code to summarise a diff or unpack an unfamiliar area of the codebase.",[12,43,44],{},"The interesting part is not the API calls — it is that the output is written for a human who\nhas forgotten the context. A list of PR titles is useless in two weeks. A short paragraph\nsaying what changed and why is not.",[19,46,48],{"id":47},"stack","Stack",[12,50,51],{},"Python, the GitHub and Notion APIs, Linear, and a Slack webhook. Configuration is environment\nvariables and nothing else — no database, no service to keep running, no state beyond what\nGitHub already knows.",{"title":53,"searchDepth":54,"depth":54,"links":55},"",2,[56,57],{"id":21,"depth":54,"text":22},{"id":47,"depth":54,"text":48},null,"A set of Claude Code scripts that assemble my week from GitHub, Notion, Linear and Slack, so my stand-up writes itself.",false,"md",true,{},1,"\u002Fprojects\u002Fclaude-automation","https:\u002F\u002Fgithub.com\u002FIRezig\u002Fclaude-automation",{"title":7,"description":59},"projects\u002Fclaude-automation",[70,71,72],"Python","Claude Code","Automation","MpofNf5YPZys09dyWeBBBZf3-B76KV6sW0iRBA1uWRs",{"id":75,"title":76,"body":77,"cover":58,"demo":104,"description":105,"draft":60,"extension":61,"featured":62,"meta":106,"navigation":62,"order":54,"path":107,"repo":58,"seo":108,"stem":109,"tags":110,"video":114,"__hash__":115},"projects_en\u002Fprojects\u002Ffake-notification-generator.md","Fake notification generator",{"type":9,"value":78,"toc":100},[79,82,85,87,90,94,97],[12,80,81],{},"Making a mockup of a notification — for a thumbnail, a slide, a bit of UI copy — usually means\nopening a design tool and rebuilding an iOS or Android notification from scratch. Again. Every\ntime.",[12,83,84],{},"This does it in a text field.",[19,86,22],{"id":21},[12,88,89],{},"You type the app name, the title and the body, pick a platform style, and get a notification\nyou can screenshot. That is the whole tool. It does one thing, it does it in about four\nseconds, and it needs no account.",[19,91,93],{"id":92},"how-it-was-built","How it was built",[12,95,96],{},"Start to finish on camera, in one sitting, as a vibe-coding session. The video is the\ndocumentation: it shows the false starts and the parts that did not work first time, which is\nusually the part that gets edited out of a build video.",[12,98,99],{},"Shipping it was the point. A tool that stays in a branch is a tool nobody uses.",{"title":53,"searchDepth":54,"depth":54,"links":101},[102,103],{"id":21,"depth":54,"text":22},{"id":92,"depth":54,"text":93},"https:\u002F\u002Ffake-notification-generator.vercel.app\u002F","A browser tool for mocking up notification screenshots — built live on camera, shipped the same day.",{},"\u002Fprojects\u002Ffake-notification-generator",{"title":76,"description":105},"projects\u002Ffake-notification-generator",[111,112,113],"Vibe coding","Frontend","Vercel","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=zLJBIJlUADI","eB04Sm0LTzPsP7rJioBkPS8xY8QJ57EXcjQmyuF6MCI",1786795369152]