[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"project-47499672":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":29,"sentiment":30,"stance_mix":31,"scored_comments":36,"aspects":37,"strip":41,"post_text":45,"what":46,"said":89,"maker_in_thread":240,"shape":247,"grid":252,"attempts":540,"same_week":541,"maker_shows":44,"maker_hidden":568,"reader_version":569,"card":570},"47499672","ProofShot","Give AI coding agents eyes to verify the UI they build","title","Show HN: ProofShot – Give AI coding agents eyes to verify the UI they build","https:\u002F\u002Fgithub.com\u002FAmElmo\u002Fproofshot","github.com","jberthom",1774338406,2026,161,106,384,4366,9,"notable","dev_tools","ai agent testing","cli",[24,25,26,27,28],"ai coding agents","ui verification","browser recording","headless chromium","pr review","debated",0.114,{"positive":32,"neutral":33,"mixed":34,"critical":35},14,17,0,11,42,{"idea":38,"docs":40},{"positive":39,"critical":35},12,{"positive":34,"critical":34},[42,34,43,34,34,44,44,43,43,34,42,43,34,34,34,42,34,34,44,43,34,43,42,43,34,43,44,42,43,42,44,42,43,44,42,44,43,42,43,34],5,3,1,"I use AI agents to build UI features daily. The thing that kept annoying me: the agent writes code but never sees what it actually looks like in the browser. It can’t tell if the layout is broken or if the console is throwing errors.\n\nSo I built a CLI that lets the agent open a browser, interact with the page, record what happens, and collect any errors. Then it bundles everything — video, screenshots, logs — into a self-contained HTML file I can review in seconds.\n\nproofshot start --run \"npm run dev\" --port 3000\n# agent navigates, clicks, takes screenshots\nproofshot stop\n\nIt works with whatev",{"problem":47,"audience":53,"pricing":57,"motivation":61,"time_to_build":65,"stack":66,"openness":86,"stage":87,"team_size":88},{"value":48,"source":49,"evidence":50},"AI coding agents cannot see what the UI they build looks like in the browser or whether console errors occur","maker",[51],{"id":52},"post",{"value":54,"source":49,"evidence":55},"developers using AI coding agents to build UI features",[56],{"id":52},{"value":58,"source":49,"evidence":59},"Free",[60],{"id":52},{"value":62,"source":49,"evidence":63},"Agents write UI code without seeing the result; maker wanted evidence without opening the browser every time",[64],{"id":52},null,[67,73,80],{"value":68,"source":49,"evidence":69},"Node.js",[70],{"id":71,"by":11,"text":72},"47512815","agent-browser runs locally (it’s a Rust CLI + Node daemon on your machine), so there’s no cloud dependency on Vercel, it’s just built by the Vercel Labs team. Everything stays…",{"value":74,"source":49,"evidence":75},"agent-browser (Vercel Labs)",[76,77],{"id":52},{"id":78,"by":11,"text":79},"47570335","ProofShot isn’t a Playwright alternative, it’s built on agent-browser (from Vercel Labs), which is a different runtime. The value isn’t “can control a browser” — playwright does…",{"value":81,"source":49,"evidence":82},"Headless Chromium",[83],{"id":84,"by":11,"text":85},"47512724","Yes agree. Web only for now since it runs on headless Chromium. Desktop and mobile are the #1 request though. For mobile the path would be driving an iOS Simulator or Android…","open_source","launched","solo",{"praise":90,"objections":110,"requests":159,"questions":184,"alternatives":202},[91,103],{"value":92,"source":93,"evidence":94},"Useful for reviewing PRs with before\u002Fafter screenshots and bundles","commenter",[95,99],{"id":96,"by":97,"text":98},"47500594","sd9","I've always found screenshots on PRs incredibly helpful as a reviewer. Historically I've had mixed success getting my team to consistently add screenshots to PRs, so this tool…",{"id":100,"by":101,"text":102},"47500072","jofzar","I'm going the opposite of everyone else is saying. This is sick OP based on what's in the document, it looks really useful when you need to quickly fix something and need to…",{"value":104,"source":93,"evidence":105},"Fills a feedback loop gap for coding agents",[106],{"id":107,"by":108,"text":109},"47509170","QubridAI","This is exactly the missing feedback loop for AI coding agents simple, practical, and surprisingly powerful.",[111,129,144],{"value":112,"source":93,"evidence":113},"Playwright and playwright-cli already capture video and screenshots",[114,118,122,126],{"id":115,"by":116,"text":117},"47499984","theshrike79","What does this do that playwright-cli doesn't? https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-cli",{"id":119,"by":120,"text":121},"47500810","nunodonato","I think playwright doesnt capture video, right?",{"id":123,"by":124,"text":125},"47524430","abletonlive","> With Playwright the agent needs to write a test script, run it, collect screenshots, parse output separately… it’s a lot of glue code. Uh what are you talking about? It most…",{"id":127,"by":124,"text":128},"47524457","Yes it does. https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-cli?tab=readme-ov-file#devtools I'm pretty sure OP wrote their own version of playwright because they didn't know this existed.",{"value":130,"source":93,"evidence":131},"Web only; no desktop or mobile support yet",[132,136,140],{"id":133,"by":134,"text":135},"47499968","VadimPR","Looks nice! Does it work for desktop applications as well, or is this only web dev?",{"id":137,"by":138,"text":139},"47500065","can16358p","How would this play with mobile apps? I'd love to see an agent doing work, then launching app on iOS sim or Android emu to visually \"use\" the app to inspect whether things work…",{"id":141,"by":142,"text":143},"47502729","_aravindc","This is awesome, does it work with desktop application ?",{"value":145,"source":93,"evidence":146},"Built-in tools in Claude Code, Antigravity and VSCode already do this",[147,151,155],{"id":148,"by":149,"text":150},"47507229","tjwebbnorfolk","VSCode and Antigravity already do this. What am I missing?",{"id":152,"by":153,"text":154},"47500293","m00dy","Gemini on Antigravity is already doing this.",{"id":156,"by":157,"text":158},"47508601","mym1990","Not to pile on, but I was using Claude Code through the native application and it started doing exactly this on its own, side by side with my prompt, running the server and…",[160,167,174],{"value":161,"source":49,"evidence":162},"Desktop app support",[163,164],{"id":84,"by":11,"text":85},{"id":165,"by":11,"text":166},"47570298","Web only for now. It runs headless Chromium under the hood. Desktop and mobile are the #1 request. Mobile path would be iOS Simulator or Android emulator integration. Desktop…",{"value":168,"source":93,"evidence":169},"Mobile support via iOS Simulator or Android emulator",[170,171],{"id":137,"by":138,"text":139},{"id":172,"by":11,"text":173},"47512736","Yes for now focused on web but accessibility tree dumps seems like a good alternative to screenshots for native apps. For web, agent-browser already uses compact element refs,…",{"value":175,"source":93,"evidence":176},"Login\u002Fsession handling for authenticated apps",[177,181],{"id":178,"by":179,"text":180},"47521650","TyrunDemeg101","Hey jberthom, this is awesome! How do you handle logged in sessions\u002Fuser authentication? I built something much much more primitive, but I have it actually storing session data…",{"id":182,"by":11,"text":183},"47570289","Right now agent-browser launches a fresh Chromium instance each time, so no persisted auth. For apps behind login, you’d need to either hit a page that doesn’t require auth, or…",[185,192],{"value":186,"source":93,"evidence":187},"How it differs from Playwright or playwright-cli",[188,189],{"id":115,"by":116,"text":117},{"id":190,"by":11,"text":191},"47512664","Maker here. Playwright is great, I use it too. The difference is really about who’s driving. ProofShot is meant for agents that just need shell commands, start to open the…",{"value":193,"source":93,"evidence":194},"How it differs from raw agent-browser",[195,199],{"id":196,"by":197,"text":198},"47508231","ting0","How does this compare to raw https:\u002F\u002Fgithub.com\u002Fvercel-labs\u002Fagent-browser ?",{"id":200,"by":11,"text":201},"47512709","ProofShot sits on top of agent-browser. agent-browser gives you the browser primitives (click, navigate, screenshot). ProofShot adds the session stuff: starts recording, pipes…",[203,208,215,222,233],{"value":204,"source":93,"evidence":205},"Playwright \u002F playwright-cli",[206,207],{"id":115,"by":116,"text":117},{"id":119,"by":120,"text":121},{"value":209,"source":93,"evidence":210},"agent-browser video recording",[211],{"id":212,"by":213,"text":214},"47507728","esafak","It looks similar to agent-video, which is also based on agent-browser: https:\u002F\u002Fwww.mux.com\u002Fblog\u002Fagentic-video-screen-recording I don't think you need either, though, because…",{"value":216,"source":93,"evidence":217},"Chrome DevTools MCP",[218],{"id":219,"by":220,"text":221},"47500306","boomskats","I find the official Chrome DevTools MCP excellent for this. Lighter than Playwright, the loop is shorter, and easy to jam into Electron too.",{"value":223,"source":93,"evidence":224},"Claude Code with Chrome",[225,229],{"id":226,"by":227,"text":228},"47512934","constantlm","Claude Code with --chrome is excellent at building UIs (and hopeless without it!)",{"id":230,"by":231,"text":232},"47501072","mosselman","I use the Claude Chrome extension for this. Works wonderfully. It lets Claude click through features itself, etc.",{"value":234,"source":93,"evidence":235},"Simon Willison's Showboat and Rodney",[236],{"id":237,"by":238,"text":239},"47507203","wild_egg","seems similar to a couple of simonw's recent tools? https:\u002F\u002Fsimonwillison.net\u002F2026\u002FFeb\u002F10\u002Fshowboat-and-rodney\u002F",{"comments":241,"answered":242,"key":243},22,13,[244,245,246],{"id":84,"text":85},{"id":190,"text":191},{"id":78,"text":79},{"commenters":248,"max_depth":249,"maker_replies":241,"first_comment_mins":250,"lifespan_hours":251},72,4,45,193,[253,257,261,265,268,270,272,274,276,279,281,284,287,288,291,294,296,297,298,299,301,303,304,306,309,312,315,317,319,320,323,325,327,329,330,334,338,339,341,344,346,348,352,355,357,360,362,365,368,371,374,377,380,382,384,386,387,390,391,393,395,399,402,404,406,409,411,414,417,420,421,422,426,430,432,435,439,443,446,448,450,454,456,458,459,461,464,466,468,470,474,476,480,484,486,491,495,497,499,503,507,511,515,519,523,526,528,532,534,537],[254,34,42,255,256,34],"47500311","project\u002Fpositive\u002Fidea","alkonaut",[258,34,34,259,260,34],"47500412","commenter\u002Fneutral\u002Fnone","bartwaardenburg",[262,34,34,263,264,34],"47509201","other\u002Fneutral\u002Fnone","hasbot",[266,34,34,263,267,34],"47512543","sedatesteak",[269,34,34,263,264,34],"47519939",[84,34,34,271,11,44],"maker\u002Fneutral\u002Fnone",[115,44,43,273,116,34],"project\u002Fneutral\u002Fidea",[275,44,34,259,101,34],"47500039",[277,44,34,259,278,34],"47500183","mohsen1",[280,44,34,259,116,34],"47500422",[282,44,34,259,283,34],"47507370","4ndrewl",[285,44,34,259,286,34],"47500270","onion2k",[119,44,34,259,120,34],[289,44,34,259,290,34],"47503039","vunderba",[292,44,34,259,293,34],"47507392","hungryhobbit",[127,44,44,295,124,34],"project\u002Fcritical\u002Fidea",[190,44,34,273,11,44],[123,44,44,295,124,34],[78,44,34,273,11,44],[96,300,42,255,97,34],2,[302,300,34,271,11,44],"47512627",[212,43,44,295,213,34],[305,43,34,273,11,44],"47512721",[307,43,43,308,213,34],"47516723","project\u002Fneutral\u002Fdocs",[310,43,34,311,11,44],"47570355","maker\u002Fneutral\u002Fdocs",[313,249,34,263,314,34],"47507003","varispeed",[316,249,34,263,264,34],"47509288",[318,249,34,271,11,44],"47512829",[100,42,42,255,101,34],[321,42,42,255,322,34],"47500244","jillesvangurp",[324,42,34,271,11,44],"47512777",[326,42,34,271,11,44],"47512763",[196,328,43,273,197,34],6,[200,328,34,273,11,44],[331,332,34,263,333,34],"47501289",7,"malloc2048",[335,336,34,263,337,34],"47500124",8,"z3t4",[219,18,34,263,220,34],[340,18,34,263,120,34],"47500807",[342,18,34,263,343,34],"47507453","infamia",[345,18,34,263,120,34],"47508633",[347,18,34,273,11,44],"47512753",[349,350,42,255,351,34],"47504657",10,"mrothroc",[353,350,34,259,354,34],"47505174","morkalork",[356,350,34,259,351,34],"47505260",[358,350,34,259,359,34],"47507401","tptacek",[361,35,34,263,286,34],"47500259",[363,35,34,263,364,34],"47500770","wg0",[366,35,34,263,367,34],"47500988","roxolotl",[369,35,34,263,370,34],"47501112","ioseph",[372,35,34,259,373,34],"47501152","embedding-shape",[375,35,44,295,376,34],"47501764","TZubiri",[378,35,34,259,379,34],"47510799","bensyverson",[381,35,43,308,290,34],"47502987",[383,35,34,311,11,44],"47570346",[385,39,43,273,120,34],"47500795",[71,39,34,271,11,44],[388,242,34,263,389,34],"47598318","rotemtam",[137,32,43,273,138,34],[392,32,34,263,322,34],"47500276",[394,32,34,263,153,34],"47500299",[396,397,42,255,398,34],"47500553",15,"dbdoskey",[400,397,34,259,401,34],"47500619","msephton",[172,397,34,403,11,44],"project\u002Fneutral\u002Fnone",[230,405,34,263,231,34],16,[407,405,43,403,408,34],"47501116","instalabsai",[410,405,34,263,293,34],"47507429",[412,405,34,263,413,34],"47509961","jwr",[415,405,34,259,416,34],"47511689","gverrilla",[418,405,34,263,419,34],"47573206","joshstrange",[178,33,43,271,179,34],[182,33,34,403,11,44],[423,424,44,295,425,34],"47499937",18,"Imustaskforhelp",[427,428,43,403,429,34],"47501515",19,"alexovch",[431,428,44,295,116,34],"47501542",[433,428,34,434,11,44],"47512797","project\u002Fneutral\u002Fexecution",[436,437,42,255,438,34],"47500018",20,"lastdong",[440,441,34,263,442,34],"47501986",21,"xtiansimon",[444,241,43,403,445,34],"47578308","ashlance",[237,447,43,273,238,34],23,[449,447,34,273,11,44],"47512808",[451,452,42,255,453,34],"47500879",24,"peter_retief",[226,455,34,263,227,34],25,[133,457,43,403,134,34],26,[165,457,34,403,11,44],[148,460,44,295,149,34],27,[462,460,42,255,463,34],"47509684","saintfire",[465,460,34,273,11,44],"47512747",[141,467,43,403,142,34],28,[469,467,34,403,11,44],"47570353",[471,472,43,403,473,34],"47514234",29,"Alifatisk",[152,475,44,295,153,34],30,[477,478,34,263,479,34],"47510958",31,"amelius",[481,482,43,403,483,34],"47525072",32,"faangguyindia",[485,482,34,403,11,44],"47570349",[487,488,42,489,490,34],"47501069",33,"project\u002Fpositive\u002Fnone","grahammccain",[492,493,42,255,494,34],"47501177",34,"sarreph",[156,496,44,295,157,34],35,[498,496,34,273,11,44],"47570359",[500,501,43,403,502,34],"47499959",36,"Horos",[504,505,44,295,506,34],"47500786",37,"dude250711",[508,509,42,489,510,34],"47514918",38,"Bradd3rs",[512,513,34,263,514,34],"47500426",39,"EruditeCoder108",[516,517,43,273,518,34],"47563282",40,"georaa",[520,521,42,255,522,34],"47519493",41,"AlphaTheGoat",[524,36,34,263,525,34],"47510460","aiwokz",[107,527,42,255,108,34],43,[529,530,44,295,531,34],"47499977",44,"zkmon",[533,530,34,259,101,34],"47500049",[535,530,34,259,536,34],"47500170","falcor84",[538,530,34,259,539,34],"47500198","philipp-gayret",[],[542,546,551,556,560,564],{"id":543,"name":544,"points":545,"category":20},"47506713","Video.js v10",648,{"id":547,"name":548,"points":549,"category":550},"47503617","sentrysearch",438,"ai",{"id":552,"name":553,"points":554,"category":555},"47505144","Email.md",380,"productivity",{"id":557,"name":558,"points":559,"category":20},"47491466","Cq",225,{"id":561,"name":562,"points":563,"category":20},"47452515","Sonar",204,{"id":565,"name":566,"points":567,"category":550},"47524704","cog",157,false,"v2",{"id":571,"name":5,"line":6,"ai":568,"cat":20,"year":13,"points":14,"comments":15,"rec":29,"s":572,"top":18,"kw":573,"maker":11,"domain":10,"tier":19,"attempts":34,"strip":574,"url":9,"mix":575,"praise":92,"objection":112,"sub":21},47499672,0.11,[24,25,26,27,28],"5030011330530005001303530315351531513530",[32,33,34,35],1793991148957]