{"id":123561,"date":"2026-03-14T21:37:57","date_gmt":"2026-03-15T00:37:57","guid":{"rendered":"https:\/\/shipping.einnews.com\/article\/899516690"},"modified":"2026-03-14T21:37:57","modified_gmt":"2026-03-15T00:37:57","slug":"garry-tan-releases-gstack-an-open-source-claude-code-system-for-planning-code-review-qa-and-shipping","status":"publish","type":"post","link":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/2026\/03\/14\/garry-tan-releases-gstack-an-open-source-claude-code-system-for-planning-code-review-qa-and-shipping\/","title":{"rendered":"Garry Tan Releases gstack: An Open-Source Claude Code System for Planning, Code Review, QA, and Shipping"},"content":{"rendered":"<div><img data-opt-id=758893364  fetchpriority=\"high\" decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAIAAAAAAAP\/\/\/ywAAAAAAQABAAACAUwAOw==\" fifu-lazy=\"1\" fifu-data-sizes=\"auto\" fifu-data-srcset=\"https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=75&resize=75&ssl=1 75w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=100&resize=100&ssl=1 100w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=150&resize=150&ssl=1 150w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=240&resize=240&ssl=1 240w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=320&resize=320&ssl=1 320w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=500&resize=500&ssl=1 500w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=640&resize=640&ssl=1 640w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=800&resize=800&ssl=1 800w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=1024&resize=1024&ssl=1 1024w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=1280&resize=1280&ssl=1 1280w, https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1&w=1600&resize=1600&ssl=1 1600w\" fifu-data-src=\"https:\/\/mlmjbqro95r8.i.optimole.com\/cb:bOxR.6a5\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/i2.wp.com\/www.marktechpost.com\/wp-content\/uploads\/2026\/03\/blog-banner23-43.png?ssl=1\" class=\"ff-og-image-inserted\"><\/div>\n<p><strong>What if AI-assisted coding became more reliable by separating product planning, engineering review, release, and QA into distinct operating modes?<\/strong> That is the idea behind Garry Tan\u2019s <strong><a href=\"https:\/\/github.com\/garrytan\/gstack\" target=\"_blank\" rel=\"noreferrer noopener\">gstack<\/a><\/strong>, an open-source toolkit that packages <strong>Claude Code<\/strong> into 8 opinionated workflow skills backed by a persistent browser runtime. The tookit describes itself as <strong>\u2018Eight opinionated workflow skills for Claude Code<\/strong>\u2018 and groups common software delivery tasks into distinct modes such as planning, review, shipping, browser automation, QA testing, and retrospectives. The goal is not to replace Claude Code with a new model layer. It is to make Claude Code operate with more explicit role boundaries during product planning, engineering review, release, and testing.<\/p>\n<h3 class=\"wp-block-heading\" id=\"h-the-8-core-commands\"><strong>The 8 Core Commands<\/strong><\/h3>\n<p>The <strong>gstack<\/strong> repository currently exposes 8 main commands: <code>\/plan-ceo-review<\/code>, <code>\/plan-eng-review<\/code>, <code>\/review<\/code>, <code>\/ship<\/code>, <code>\/browse<\/code>, <code>\/qa<\/code>, <code>\/setup-browser-cookies<\/code>, and <code>\/retro<\/code>. Each command is mapped to a specific operating mode. <code>\/plan-ceo-review<\/code> is positioned as a product-level planning pass. <code>\/plan-eng-review<\/code> is used for architecture, data flow, failure modes, and tests. <code>\/review<\/code> is focused on production risk and code review. <code>\/ship<\/code> is used for preparing a ready branch, syncing with main, running tests, and opening a PR. <code>\/browse<\/code> gives the agent browser access, while <code>\/qa<\/code> is designed for systematic testing of affected routes and flows. <code>\/setup-browser-cookies<\/code> imports cookies from a local browser into the headless session, and <code>\/retro<\/code> is used for engineering retrospectives. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-the-persistent-browser-is-the-core-system\"><strong>The Persistent Browser Is the Core System<\/strong><\/h3>\n<p>The most important technical part of gstack is not the Markdown skills. It is the browser subsystem. gstack gives Claude Code <strong>a persistent browser<\/strong> and that the browser is the hard part, while the rest is mainly Markdown. Instead of launching a fresh browser for every action, gstack runs a <strong>long-lived headless Chromium daemon<\/strong> and communicates with it over <strong>localhost HTTP<\/strong>. The reason is latency and state retention. A cold start costs around <strong>3\u20135 seconds per tool call<\/strong>, while subsequent calls after startup are designed to run in roughly <strong>100\u2013200 ms<\/strong>. Because the browser stays alive, cookies, tabs, <code>localStorage<\/code>, and login state persist across commands. The server also shuts down automatically after <strong>30 minutes of idle time<\/strong>. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-how-gstack-connects-browser-automation-to-qa\"><strong>How gstack Connects Browser Automation to QA<\/strong><\/h3>\n<p>That daemon architecture matters for QA and browser-driven development. In many agent workflows, browser automation is a separate debugging step or a screenshot utility. In gstack, browser access is part of the core workflow. The repo describes <code>\/browse<\/code> as the mode that lets the agent log in, click through the app, take screenshots, and inspect breakage. <code>\/qa<\/code> builds on top of that by analyzing the branch diff, identifying affected routes, and testing the relevant pages or flows. The sample flow in the repo shows <code>\/qa<\/code> inspecting <strong>8 changed files<\/strong> and <strong>3 affected routes<\/strong>, then testing those routes against a local app instance. This means the project is trying to tie source changes to actual application behavior instead of treating QA as a detached manual pass. <\/p>\n<div class=\"ai-viewports ai-viewport-1 ai-viewport-3 ai-insert-15-80718759\" style=\"margin: 8px 0;clear: both\" data-insertion-position=\"prepend\" data-selector=\".ai-insert-15-80718759\" data-insertion-no-dbg data-code=\"PGRpdiBjbGFzcz0nY29kZS1ibG9jayBjb2RlLWJsb2NrLTE1JyBzdHlsZT0nbWFyZ2luOiA4cHggMDsgY2xlYXI6IGJvdGg7Jz4KPGEgaHJlZj0iaHR0cHM6Ly93d3cucmVkZGl0LmNvbS9yL21hY2hpbmVsZWFybmluZ25ld3MvIj4g8J+QnSBKb2luIDEyMGsrIG1lbWJlcnMgb2Ygb3VyIE1MIFN1YnJlZGRpdCBDb21tdW5pdHkuLjwvYT48L2Rpdj4K\" data-block=\"15\"><\/div>\n<h3 class=\"wp-block-heading\" id=\"h-installation-requirements-and-project-layout\"><strong>Installation Requirements and Project Layout<\/strong><\/h3>\n<p>The repository\u2019s implementation choices are also fairly specific. gstack requires <strong>Claude Code<\/strong>, <strong>Git<\/strong>, and <strong>Bun v1.0+<\/strong>. The <code>package.json<\/code> shows the current version as <strong>0.3.3<\/strong>, lists <strong>Playwright<\/strong> and <code>diff<\/code> as runtime dependencies, and compiles a <code>browse<\/code> executable from the <code>browse<\/code> source tree. According to the repo\u2019s README, <code>\/browse<\/code> compiles a native binary and is supported on <strong>macOS and Linux<\/strong>, for both <strong>x64<\/strong> and <strong>arm64<\/strong>. The install flow copies the repo into <code>~\/.claude\/skills\/gstack<\/code>, runs <code>.\/setup<\/code>, and registers the skills for Claude Code. Teams can also copy the same setup into a repository-local <code>.claude\/skills\/gstack<\/code> directory so the workflow is shared inside a project. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-why-the-project-uses-bun\"><strong>Why the Project Uses Bun<\/strong><\/h3>\n<p>The architecture document explains why the project uses <strong>Bun<\/strong> rather than a more conventional Node.js setup. There are 4 stated reasons: compiled binaries, native SQLite access, native TypeScript execution, and a built-in HTTP server with <code>Bun.serve()<\/code>. Those choices are practical rather than cosmetic. gstack reads Chromium\u2019s SQLite cookie database directly, and Bun\u2019s built-in database support removes the need for extra native packages. The compiled binary model also fits the repo\u2019s install style, because users are not expected to manage a separate runtime toolchain inside <code>~\/.claude\/skills\/<\/code>. <\/p>\n<h3 class=\"wp-block-heading\" id=\"h-key-takeaways\"><strong>Key Takeaways<\/strong><\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>gstack is a workflow layer for Claude Code, not a new model or agent framework.<\/strong> It packages software delivery into 8 opinionated slash-command skills for planning, review, shipping, browser automation, QA, cookie setup, and retrospectives.<\/li>\n<li><strong>The persistent browser daemon is the main technical component.<\/strong> gstack runs a long-lived headless Chromium process over localhost HTTP so cookies, tabs, <code>localStorage<\/code>, and login state persist across commands.<\/li>\n<li><strong>QA is tied directly to code changes.<\/strong> The <code>\/qa<\/code> workflow analyzes branch diffs, identifies affected routes, and tests the relevant application paths instead of treating browser checks as a separate manual step.<\/li>\n<li><strong>The project is built around Bun for practical systems reasons.<\/strong> Bun is used for compiled binaries, native SQLite access, native TypeScript execution, and a built-in HTTP server for the browser daemon.<\/li>\n<li><strong>gstack\u2019s contribution is operational structure.<\/strong> Its main value is separating product review, engineering review, code review, release, and browser-driven validation into explicit modes with narrow responsibilities.<\/li>\n<\/ul>\n<p id=\"p-rc_d48437497689081f-76\">Check out&nbsp;<strong><a href=\"https:\/\/github.com\/garrytan\/gstack\" target=\"_blank\" rel=\"noreferrer noopener\">Repo here<\/a>.&nbsp;<\/strong>Also,&nbsp;feel free to follow us on&nbsp;<strong><a href=\"https:\/\/x.com\/intent\/follow?screen_name=marktechpost\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Twitter<\/mark><\/a><\/strong>&nbsp;and don\u2019t forget to join our&nbsp;<strong><a href=\"https:\/\/www.reddit.com\/r\/machinelearningnews\/\" target=\"_blank\" rel=\"noreferrer noopener\">120k+ ML SubReddit<\/a><\/strong>&nbsp;and Subscribe to&nbsp;<strong><a href=\"https:\/\/www.aidevsignals.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">our Newsletter<\/a><\/strong>. Wait! are you on telegram?&nbsp;<strong><a href=\"https:\/\/t.me\/machinelearningresearchnews\" target=\"_blank\" rel=\"noreferrer noopener\">now you can join us on telegram as well.<\/a><\/strong><\/p>\n<p> <!-- MOLONGUI AUTHORSHIP PLUGIN 5.2.9 --><br \/>\n<!-- https:\/\/www.molongui.com\/wordpress-plugin-post-authors --> <!-- CONTENT END 2 --> <\/p>\n<p><strong><a href=\"https:\/\/blockads.fivefilters.org\"> <\/a><\/strong> <a href=\"https:\/\/blockads.fivefilters.org\/acceptable.html\"> <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8230; modes such as planning, review, <span class=\"match\">shipping<\/span>, browser automation, QA testing, and &#8230; -command skills for planning, review, <span class=\"match\">shipping<\/span>, browser automation, QA, cookie setup &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-123561","post","type-post","status-publish","format-standard","hentry","category-news","wpcat-1-id"],"_links":{"self":[{"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/posts\/123561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/comments?post=123561"}],"version-history":[{"count":0,"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/posts\/123561\/revisions"}],"wp:attachment":[{"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/media?parent=123561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/categories?post=123561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/new7.shop\/zerocostfreehost\/index.php\/wp-json\/wp\/v2\/tags?post=123561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}