Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6cdf193
feat(aside): browser-driver contract, cookbook, research and fallback…
time-attack Sep 5, 2026
7cb6a52
feat(render): Aside-first local-HTML renderer with the bundled browse…
time-attack Sep 5, 2026
0ded0c8
refactor(browse): /browse drives Aside first, with the $B reference b…
time-attack Sep 5, 2026
181f9d8
refactor(qa): /qa and /qa-only drive Aside, fall back to $B
time-attack Sep 5, 2026
27e38cb
refactor(design): design-review, design-consultation, design-shotgun,…
time-attack Sep 5, 2026
0953aed
refactor(deploy): benchmark, canary, land-and-deploy Step 7, devex-re…
time-attack Sep 5, 2026
cda98f1
feat(third-party-actions): Aside is the recommended driver; gstack's …
time-attack Sep 5, 2026
c0ac824
refactor(scrape): /scrape reads pages through Aside; the browser-skil…
time-attack Sep 5, 2026
f74d3a1
refactor(make-pdf): print through Aside first, the bundled browser ot…
time-attack Sep 5, 2026
c86590f
refactor(diagram): the triplet is one gstack-render call
time-attack Sep 5, 2026
48d2b98
feat(research): web research runs in Aside first, WebSearch second
time-attack Sep 5, 2026
993692c
feat(setup,gen-skill-docs): prune renders of skills that no longer exist
time-attack Sep 5, 2026
8862178
test: registries, budgets and suite reconciled for Aside-first with t…
time-attack Sep 5, 2026
f7d68c2
docs: Aside first, gstack browser fallback
time-attack Sep 5, 2026
7279701
chore: regenerate SKILL.md docs, llms.txt, agents digest, ship golden…
time-attack Sep 5, 2026
77c74eb
v1.80.0.0: Aside is the browser gstack drives first; the bundled brow…
time-attack Sep 5, 2026
419fec0
Merge origin/main (v1.80.0.0) into consolidate-browser-skills-into-as…
garrytan Sep 6, 2026
ea61bd6
docs(todos): file non-Claude host ownership-gate and version-heading …
garrytan Sep 6, 2026
444f8fe
fix: pre-landing review fixes for the Aside-first branch
garrytan Sep 6, 2026
e1147b7
test: coverage for the render CLI, setup rebuild check, make-pdf exit…
garrytan Sep 6, 2026
01dbd56
docs: CHANGELOG and TODOS cover the review fixes (v1.81.0.0)
garrytan Sep 6, 2026
97fc880
docs: sync project docs with the v1.81.0.0 review fixes
garrytan Sep 6, 2026
6928bf0
docs: CHANGELOG states the precise mid-run retry rule
garrytan Sep 6, 2026
2649a3b
fix(test): skill-e2e-bws slices the $B setup block from the Browser f…
garrytan Sep 6, 2026
287b976
fix(test): gate POSIX-only fixtures off Windows
garrytan Sep 6, 2026
7724c46
fix(render): runProc waits for the exit code until the kill deadline;…
garrytan Sep 6, 2026
dc9a240
test(aside-render): warm the daemon before live fallback cases; failu…
garrytan Sep 6, 2026
060c55d
docs: CHANGELOG notes the cold-start tolerance of the bundled-browser…
garrytan Sep 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 21 additions & 11 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,16 @@ Invoke them by name (e.g., `/office-hours`).
| `/devex-review` | Live developer experience audit (TTHW measured against the real flow). |
| `/qa` | Open a real browser, find bugs, fix them, re-verify. |
| `/qa-only` | Same methodology as /qa but report only — no code changes. |
| `/scrape` | Pull data from a web page. First call prototypes; codified call runs in ~200ms. |
| `/skillify` | Codify the most recent successful `/scrape` flow into a permanent browser-skill. |
| `/scrape` | Pull data from a web page in your Aside browser, with your real logged-in state. Read-only. On the fallback browser a codified browser-skill answers a repeat intent in ~200ms. |
| `/skillify` | Codify the most recent successful `/scrape` flow into a permanent browser-skill (fallback browser only). |

### Release + deploy

| Skill | What it does |
|-------|-------------|
| `/ship` | Run tests, review, push, open PR. Workspace-aware version queue. |
| `/land-and-deploy` | Merge the PR, wait for CI and deploy, verify production health. |
| `/canary` | Post-deploy monitoring loop using the browse daemon. |
| `/canary` | Post-deploy monitoring loop in your Aside browser (or gstack's own when Aside is absent). |
| `/landing-report` | Read-only dashboard for the workspace-aware ship queue. |
| `/document-release` | Update all docs to match what you just shipped. |
| `/document-generate` | Generate Diataxis docs (tutorial / how-to / reference / explanation) from code. |
Expand All @@ -69,12 +69,18 @@ Invoke them by name (e.g., `/office-hours`).

### Browser + agent integration

Every browser skill drives the Aside AI browser first (macOS 15+, aside.com) —
the user's real browser with their real sessions, through `aside repl` scripts;
gstack never installs it. When Aside is not installed or not running (Linux,
Windows, a closed Aside app) the same skills fall back automatically to gstack's
own headless Chromium (`$B`), which is where the three skills under `/browse` apply.

| Skill | What it does |
|-------|-------------|
| `/browse` | Headless browser — real Chromium, real clicks, ~100ms/command. |
| `/open-gstack-browser` | Launch the visible GStack Browser with sidebar + stealth. |
| `/setup-browser-cookies` | Import cookies from your real browser for authenticated testing. |
| `/pair-agent` | Pair a remote AI agent (OpenClaw, Codex, etc.) with your browser. |
| `/browse` | Drive a browser: open a page, read it, click through a flow, screenshots, console errors. Aside first; gstack's own Chromium (~100ms/command) as the fallback. Every other browser skill stands on it. |
| `/open-gstack-browser` | Launch the visible GStack Browser with sidebar + stealth — the headed face of the fallback engine. |
| `/setup-browser-cookies` | Import cookies from your real browser into the fallback engine for authenticated testing. Unnecessary on Aside. |
| `/pair-agent` | Pair a remote AI agent (OpenClaw, Codex, etc.) with gstack's own browser over a scoped tunnel. |

### iOS QA — drive real iPhones over USB or Tailscale (v1.43.0.0+)

Expand Down Expand Up @@ -104,8 +110,8 @@ End-to-end walkthrough: [docs/howto-ios-testing-with-gstack.md](docs/howto-ios-t
| `/freeze` | Lock edits to one directory. Hard block, not just a warning. |
| `/guard` | Activate both careful + freeze at once. |
| `/unfreeze` | Remove directory edit restrictions. |
| `/make-pdf` | Turn any markdown file into a publication-quality PDF. |
| `/diagram` | English in, diagram out: mermaid source + editable .excalidraw + SVG/PNG, offline. |
| `/make-pdf` | Turn any markdown file into a publication-quality PDF. Renders through Aside, or gstack's own browser when Aside is absent. |
| `/diagram` | English in, diagram out: mermaid source + editable .excalidraw + SVG/PNG, offline. Renders through Aside, or gstack's own browser when Aside is absent. |

## Build commands

Expand All @@ -126,12 +132,16 @@ bun run skill:check # health dashboard for all skills
MSYS today; native PowerShell support is a future expansion. The `bin/gstack-paths`
helper resolves state roots through `CLAUDE_PLUGIN_DATA` / `GSTACK_HOME` so plugin
installs work on every platform.
- **Browser and renderer**: the browser skills, `/make-pdf`, and `/diagram` drive
the Aside browser first, which is macOS 15+ only. On Linux and Windows (or a
Mac with Aside closed) the readiness check says so once and the same skills use
gstack's own bundled browser, built by `./setup`.

## Key conventions

- SKILL.md files are **generated** from `.tmpl` templates. Edit the template, not the output.
- Run `bun run gen:skill-docs --host codex` to regenerate Codex-specific output.
- The browse binary provides headless browser access. Use `$B <command>` in skills.
- Browser steps in skills are `aside repl` scripts per `scripts/resolvers/aside.ts` (Aside first), each with a `$B` equivalent for the fallback engine — `$B <command>` is the browse binary and is a legitimate tool when the Aside probe does not print `READY`. Local HTML renders through `bin/gstack-render.ts`, which picks the same way.
- Safety skills (careful, freeze, guard) use inline advisory prose — always confirm before destructive operations.
- State paths resolve via `bin/gstack-paths` (sourced via `eval "$(...)"`). Honors `GSTACK_HOME`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PLANS_DIR`.
- The `claude` CLI binary resolves via `browse/src/claude-bin.ts` (`Bun.which()` + `GSTACK_CLAUDE_BIN` override). Set `GSTACK_CLAUDE_BIN=wsl` plus `GSTACK_CLAUDE_BIN_ARGS='["claude"]'` to run Claude through WSL on Windows.
- The `claude` CLI binary resolves via `lib/claude-bin.ts` (re-exported from `browse/src/claude-bin.ts` for browse internals; `Bun.which()` + `GSTACK_CLAUDE_BIN` override). Set `GSTACK_CLAUDE_BIN=wsl` plus `GSTACK_CLAUDE_BIN_ARGS='["claude"]'` to run Claude through WSL on Windows.
Loading
Loading