gstack

A browser-control tool for Claude Code that uses a persistent hidden Chromium browser. It can open pages, interact with forms, run JavaScript, take screenshots, and inspect page behavior.

In plain words
What is it for?
Use it to browse URLs, verify web pages, inspect HTML and CSS, submit forms, capture screenshots, and collect console or network logs. It needs a one-time setup if the browser command is not built.
Why use it?
It lets an agent check and troubleshoot websites through a real browser while keeping the browser running between commands.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/lmanchu/iris-system/gstack
Any agent
npx skills add lmanchu/iris-system --skill gstack
Clone the repo
git clone --depth 1 https://github.com/lmanchu/iris-system

Made for: Claude Code, Codex.

Per session 95 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,154 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00095 $0.02154
Opus 5 $0.00048 $0.01077
Sonnet 5 $0.00019 $0.00431
Haiku 4.5 $0.00010 $0.00215

Measured yesterday against content hash 4e5e38f2eed8, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

gstack scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

The scan reads SKILL.md. This mod also ships 11 executable files (browse/src/browser-manager.ts, browse/src/buffers.ts, browse/src/cli.ts, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

3. If `bun` is not installed, tell the user to install it: `curl -fsSL https://bun.sh/install | bash`

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

3. If `bun` is not installed, tell the user to install it: `curl -fsSL https://bun.sh/install | bash`
Origin

Copies of this mod

1 near-identical copy found in the catalogue:

  • browse — 95% identical, 2 lines differ
.claude/skills/gstack/SKILL.md · 255 lines

How it starts

The opening of the file, as written. The whole thing — 255 lines — stays where its author put it; the contents beside it link to each section on GitHub.

gstack: Persistent Browser for Claude Code

Persistent headless Chromium daemon. First call auto-starts the server (~3s). Every subsequent call: ~100-200ms. Auto-shuts down after 30 min idle.

SETUP (run this check BEFORE any browse command)

Before using any browse command, find the skill and check if the binary exists:

# Check project-level first, then user-level
if test -x .claude/skills/gstack/browse/dist/browse; then
  echo "READY_PROJECT"
elif test -x ~/.claude/skills/gstack/browse/dist/browse; then
  echo "READY_USER"
else
  echo "NEEDS_SETUP"
fi

Set B to whichever path is READY and use it for all commands. Prefer project-level if both exist.

If NEEDS_SETUP:

  1. Tell the user: "gstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait for their response.
  2. If they approve, determine the skill directory (project-level .claude/skills/gstack or user-level ~/.claude/skills/gstack) and run:
cd <SKILL_DIR> && ./setup
  1. If bun is not installed, tell the user to install it: curl -fsSL https://bun.sh/install | bash
  2. Verify the .gitignore in the skill directory contains browse/dist/ and node_modules/. If either line is missing, add it.

Once setup is done, it never needs to run again (the compiled binary persists).

IMPORTANT

  • Use the compiled binary via Bash: .claude/skills/gstack/browse/dist/browse (project) or ~/.claude/skills/gstack/browse/dist/browse (user).
  • NEVER use mcp__claude-in-chrome__* tools. They are slow and unreliable.
  • The browser persists between calls — cookies, tabs, and state carry over.
  • The server auto-starts on first command. No setup needed.

Quick Reference

B=~/.claude/skills/gstack/browse/dist/browse

# Navigate to a page
$B goto https://example.com

# Read cleaned page text
$B text

# Take a screenshot (then Read the image)
$B screenshot /tmp/page.png

# Snapshot: accessibility tree with refs
$B snapshot -i

# Click by ref (after snapshot)
$B click @e3

# Fill by ref
$B fill @e4 "[email protected]"

# Run JavaScript
$B js "document.title"

# Get all links
$B links

# Click by CSS selector
$B click "button.submit"

# Fill a form by CSS selector
$B fill "#email" "[email protected]"
$B fill "#password" "abc123"
$B click "button[type=submit]"

# Get HTML of an element
$B html "main"

# Get computed CSS
$B css "body" "font-family"

# Get element attributes
$B attrs "nav"

# Wait for element to appear
$B wait ".loaded"

# Accessibility tree
$B accessibility

# Set viewport
$B viewport 375x812

# Set cookies / headers
$B cookie "session=abc123"
$B header "Authorization:Bearer token123"

Read the full file on GitHub · 255 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 255 lines · 95 tokens per session scan C 4e5e38f2eed8

Subscribe to this mod's changes

gstack is a skill published in the GitHub repository lmanchu/iris-system (5 stars, last pushed 2mo ago), licensed MIT. It adds 95 tokens to every session and 2,154 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories