Gauntlet
anomalyco/browser-control
Run a real-world navigation and capability gauntlet on Browser Control across live websites, fix general DOM/ARIA/CDP root causes, benchmark speed and token efficiency, and finish with a mandatory…
Layer 1 skill for browser automation and visual UX documentation.
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install prime-radiant-inc/greenfield visual-exploration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/visual-exploration .claude/skills/visual-exploration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .claude/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-explorationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install prime-radiant-inc/greenfield visual-exploration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/visual-exploration .agents/skills/visual-exploration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .agents/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install prime-radiant-inc/greenfield visual-exploration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/visual-exploration .cursor/skills/visual-exploration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .cursor/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/prime-radiant-inc/greenfield.git --path skills/visual-exploration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install prime-radiant-inc/greenfield visual-exploration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/visual-exploration .gemini/skills/visual-exploration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .gemini/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install prime-radiant-inc/greenfield visual-explorationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/visual-exploration .github/skills/visual-exploration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .github/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install prime-radiant-inc/greenfield visual-exploration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/prime-radiant-inc/greenfield.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/visual-exploration .opencode/skills/visual-exploration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "visual-exploration" agent skill from https://github.com/prime-radiant-inc/greenfield/tree/main/skills/visual-exploration into .opencode/skills/visual-exploration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "visual-exploration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
visual-explorationLayer 1 skill for browser automation and visual UX documentation.
Visual Exploration is an agent skill from prime-radiant-inc/greenfield. Layer 1 skill for browser automation and visual UX documentation. Initial reconnaissance, navigation mapping, interaction documentation, end-to-end flow capture, edge case exploration, screenshot methodology. Loaded by the analyzer agent during Layer 1.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Productivity & Automation, covering Browser automation. The repository describes itself as: A Claude Code plugin that reverse-engineers clean behavioral specs, test vectors, and acceptance criteria from any codebase, producing a provenance trail so a fresh team can… The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6e6d4b4. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript, markdown and bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Visual Exploration loads about 3.7k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 1,076 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from prime-radiant-inc/greenfield at commit 6e6d4b4, republished under its Apache-2.0 licence (© prime-radiant-inc). 1,076 words, ~3,743 tokens.
.claude/skills/visual-exploration/SKILL.md (or your agent's skills folder).Document behavioral intelligence through browser automation and visual observation. Every screenshot is an empirical observation. Every interaction sequence is a behavioral flow. This mode captures what the user SEES and what the system DOES in response to user actions.
Visual exploration activates when:
This mode requires a running instance of the target application and browser automation capabilities (Playwright, Puppeteer, or equivalent). All output is RAW (screenshots and flow documentation capture the target's UI in detail).
Targets without a web UI get no useful signal from this mode — skip it.
Source code tells you what the system CAN do. Tests tell you what the system MUST do. Visual exploration tells you what the system LOOKS LIKE while doing it. This is behavioral intelligence that no other mode captures:
Goal: Navigate to the root URL, capture the landing page, and identify the application type, auth requirements, and available affordances.
# Navigate to root URL and screenshot
# (Using Playwright as reference; adapt to available browser automation)const page = await browser.newPage();
await page.goto(ROOT_URL, { waitUntil: 'networkidle' });
await page.screenshot({ path: 'workspace/raw/runtime/visual/screenshots/001-landing.png', fullPage: true });Document:
If authentication is required:
Goal: Click every navigation element, screenshot each page, and document the complete navigation tree.
// Extract all navigation links
const navLinks = await page.$$eval('nav a, [role="navigation"] a, .sidebar a, .menu a, header a',
links => links.map(a => ({ text: a.textContent.trim(), href: a.href }))
);For each navigation element:
for (const [index, link] of navLinks.entries()) {
await page.goto(link.href, { waitUntil: 'networkidle' });
await page.screenshot({
path: `workspace/raw/runtime/visual/screenshots/nav-${String(index).padStart(3, '0')}-${slugify(link.text)}.png`,
fullPage: true
});
}Write to workspace/raw/runtime/visual/navigation-map.md:
## Navigation Tree
- **Home** (`/`) -- screenshot: 001-landing.png
- **Dashboard** (`/dashboard`) -- screenshot: nav-001-dashboard.png
- **Analytics** (`/dashboard/analytics`) -- screenshot: nav-002-analytics.png
- **Reports** (`/dashboard/reports`) -- screenshot: nav-003-reports.png
- **Settings** (`/settings`) -- screenshot: nav-004-settings.png
- **Profile** (`/settings/profile`) -- screenshot: nav-005-profile.png
- **Billing** (`/settings/billing`) -- screenshot: nav-006-billing.pngGoal: For each page, identify interactive elements, interact with them, and capture before/after screenshots documenting the system's feedback.
For each page, identify:
const interactiveElements = await page.$$eval(
'button, input, select, textarea, [role="button"], [role="tab"], [onclick], a[href="#"]',
els => els.map(el => ({
tag: el.tagName,
type: el.type || '',
text: el.textContent?.trim().substring(0, 50),
id: el.id,
name: el.name,
ariaLabel: el.getAttribute('aria-label'),
}))
);For each interactive element:
// Example: form submission
await page.screenshot({ path: `screenshots/form-${name}-before.png` });
await page.fill('input[name="email"]', 'test@example.com');
await page.click('button[type="submit"]');
await page.waitForTimeout(1000); // Allow time for feedback
await page.screenshot({ path: `screenshots/form-${name}-after.png` });Write to workspace/raw/runtime/visual/page-inventory.md:
## Page: Settings > Profile
**URL:** `/settings/profile`
**Screenshot:** nav-005-profile.png
### Interactive Elements
| Element | Type | Action Taken | Feedback | Screenshots |
|---------|------|-------------|----------|-------------|
| Display Name | text input | Typed "Test User" | No immediate feedback | form-profile-before.png, form-profile-after.png |
| Save | submit button | Clicked | Success toast: "Profile updated" | form-profile-save.png |
| Avatar | file upload | Uploaded test.png | Preview updated | form-profile-avatar.png |Goal: Document end-to-end user flows with screenshots at every state transition.
Document these flows whenever they exist:
| Flow | Description | Priority |
|---|---|---|
| Onboarding | First-time user experience from signup to first use | High |
| Core workflow | The primary task the application enables | High |
| Error recovery | What happens when something goes wrong | High |
| Settings/configuration | How users customize the application | Medium |
| Search/filter | How users find content within the application | Medium |
| CRUD operations | Create, read, update, delete for primary entities | Medium |
| Authentication flow | Login, logout, password reset, session expiry | Medium |
| Export/import | How data moves in and out of the application | Lower |
For each flow, create a directory under workspace/raw/runtime/visual/flows/:
workspace/raw/runtime/visual/flows/
onboarding/
step-01-landing.png
step-02-signup-form.png
step-03-email-verification.png
step-04-profile-setup.png
step-05-first-dashboard.png
flow.md
core-workflow/
step-01-start.png
step-02-input.png
step-03-processing.png
step-04-result.png
flow.mdEach flow.md follows this format:
# Flow: Onboarding
## Steps
### Step 1: Landing Page
**Screenshot:** step-01-landing.png
**URL:** `/`
**Action:** Click "Sign Up" button
**State:** Unauthenticated, no account
### Step 2: Signup Form
**Screenshot:** step-02-signup-form.png
**URL:** `/signup`
**Action:** Fill email, password, click "Create Account"
**State:** Unauthenticated, form displayed
**Feedback:** Form validation on blur for email format
### Step 3: Email Verification
**Screenshot:** step-03-email-verification.png
**URL:** `/verify`
**Action:** (requires email access -- documented but not tested)
**State:** Account created, not verified
**Feedback:** "Check your email" message displayed
## Behavioral Claims
- New accounts require email verification before first use
<!-- cite: source=visual-observation, ref=flows/onboarding/step-03-email-verification.png, confidence=confirmed, agent=visual-explorer -->Goal: Explore edge cases that reveal the system's behavior at its boundaries.
// Navigate to pages likely to have empty states (lists, dashboards, search results)
// Screenshot each empty state
await page.goto('/projects'); // Assuming no projects exist
await page.screenshot({ path: 'screenshots/empty-projects.png', fullPage: true });Document: What does the system show when there is no data? Does it provide guidance? Is the UI broken?
// Submit forms with very long text
await page.fill('input[name="title"]', 'A'.repeat(1000));
await page.screenshot({ path: 'screenshots/long-input.png' });Document: Does the system truncate? Overflow? Reject? Scroll?
// Test at different viewport sizes
const viewports = [
{ width: 375, height: 812, name: 'mobile' }, // iPhone
{ width: 768, height: 1024, name: 'tablet' }, // iPad
{ width: 1280, height: 800, name: 'laptop' }, // Laptop
{ width: 1920, height: 1080, name: 'desktop' }, // Desktop
];
for (const vp of viewports) {
await page.setViewportSize({ width: vp.width, height: vp.height });
await page.screenshot({ path: `screenshots/responsive-${vp.name}.png`, fullPage: true });
}Document: Does the layout adapt? Is navigation accessible at mobile sizes? Are interactive elements reachable?
// Check for keyboard navigation
await page.keyboard.press('Tab');
await page.screenshot({ path: 'screenshots/keyboard-focus-1.png' });
await page.keyboard.press('Tab');
await page.screenshot({ path: 'screenshots/keyboard-focus-2.png' });
// Check for skip links
await page.keyboard.press('Tab'); // First tab should focus skip-to-content if presentDocument: Is keyboard navigation possible? Are focus indicators visible? Is there a skip-to-content link?
All screenshots follow this naming scheme:
{phase}-{context}-{description}.png| Phase Prefix | Usage |
|---|---|
001- through 099- | Phase 1: Initial reconnaissance |
nav-NNN- | Phase 2: Navigation mapping |
form-{page}- | Phase 3: Interaction documentation |
step-NN- | Phase 4: Flow documentation (within flow subdirectory) |
edge-{type}- | Phase 5: Edge case exploration |
workspace/raw/runtime/visual/
screenshots/ # All screenshots (flat, except flows)
001-landing.png
nav-001-dashboard.png
nav-002-analytics.png
form-profile-before.png
form-profile-after.png
edge-empty-projects.png
edge-responsive-mobile.png
flows/ # End-to-end flow documentation
onboarding/
step-01-landing.png
step-02-signup.png
flow.md
core-workflow/
step-01-start.png
step-02-result.png
flow.md
navigation-map.md # Complete navigation tree with screenshot refs
page-inventory.md # Per-page interactive element inventory
visual-behaviors.md # Behavioral claims synthesized from all observationsAll claims from visual exploration use source=visual-observation:
- The dashboard displays a "No projects" message with a "Create Project" call-to-action when the project list is empty
<!-- cite: source=visual-observation, ref=screenshots/edge-empty-projects.png, confidence=confirmed, agent=visual-explorer -->Every behavioral claim gets an inline citation immediately after the claim. The ref field should be the screenshot path.
workspace/raw/. They never reach workspace/output/ or workspace/public/.networkidle or explicit waits for dynamic content.<!-- cite: --> comment immediately after the claim. Never defer citation to a later step.fullPage: true to capture below-the-fold content. Viewport-only screenshots miss content.© prime-radiant-inc, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/visual-exploration of prime-radiant-inc/greenfield.
Open the folder on GitHubat commit 6e6d4b4
Visual Exploration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Visual Exploration this skillprime-radiant-inc/greenfield | 292 | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| Gauntletanomalyco/browser-control | 440 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Browsemr-daedalium/ostack-saas | 114 | 1 repos | ~5.3k | Automated safety check: Notes | MIT | |
| Tabz BrowserGGPrompts/TabzChrome | 147 | — | ~730 | Automated safety check: Pass | MIT | |
| Pstackno-session/pstack | 136 | — | ~5.6k | Automated safety check: Notes | MIT | |
| Peated QAdcramer/peated | 102 | — | ~1.9k | Automated safety check: Notes | Apache-2.0 |
anomalyco/browser-control
Run a real-world navigation and capability gauntlet on Browser Control across live websites, fix general DOM/ARIA/CDP root causes, benchmark speed and token efficiency, and finish with a mandatory…
mr-daedalium/ostack-saas
Fast headless browser for QA testing and site dogfooding. An agent skill from mr-daedalium/ostack-saas.
GGPrompts/TabzChrome
Browser automation via 70 tabz MCP tools. An agent skill from GGPrompts/TabzChrome.
no-session/pstack
Fast headless browser for QA testing and site dogfooding. An agent skill from no-session/pstack.
dcramer/peated
A skill your agent uses when manually QAing Peated changes across the API, CLI, or web UI; selecting smoke checks after code changes; using agent-browser for Peated flows; verifying local behavior…
iopsystems/rezolus
Render the running viewer in a real headless browser and assert on what it drew — element geometry, computed colours, wrap points, truncated labels, console errors.
prime-radiant-inc/greenfield
Master methodology for reverse-engineering a codebase into behavioral specs with cited evidence, reading every line across source, binaries, docs, runtime and git history.
prime-radiant-inc/greenfield
Mines tutorials, forums, reviews, issues and changelogs for observed product behavior, using six search channels and consensus analysis.
prime-radiant-inc/greenfield
Runs untrusted analysis targets inside Docker or Podman containers with memory, CPU and process limits, covering image builds, lifecycle, command execution and cleanup.
prime-radiant-inc/greenfield
Finds OpenAPI, GraphQL, Protobuf and JSON Schema files in a codebase and extracts behavioral claims from them as part of a reverse-engineering workflow.
prime-radiant-inc/greenfield
Method for extracting behavioral specifications from a product's public documentation: tiered search order, claim extraction rules, output structure, stop criteria and gap analysis.
prime-radiant-inc/greenfield
Layer 1 skill for SDK and ecosystem analysis. An agent skill from prime-radiant-inc/greenfield.
Layer 1 skill for browser automation and visual UX documentation. Visual Exploration is an agent skill from prime-radiant-inc/greenfield. Layer 1 skill for browser automation and visual UX documentation.
Visual Exploration fits situations like: tasks that involve Browser automation.
Run `npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a claude-code`. Or copy the skill folder (skills/visual-exploration in prime-radiant-inc/greenfield) into .claude/skills/visual-exploration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a codex`. Or copy the skill folder (skills/visual-exploration in prime-radiant-inc/greenfield) into .agents/skills/visual-exploration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add prime-radiant-inc/greenfield --skill visual-exploration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/visual-exploration, .gemini/skills/visual-exploration, .github/skills/visual-exploration and .opencode/skills/visual-exploration in your project.
SKILL.md names no scripts, command-line tools or credentials: Visual Exploration is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Visual Exploration is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Visual Exploration: Gauntlet (anomalyco/browser-control, 440 stars), Browse (mr-daedalium/ostack-saas, 114 stars), Tabz Browser (GGPrompts/TabzChrome, 147 stars) and Pstack (no-session/pstack, 136 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
prime-radiant-inc (a GitHub organization) maintains it in prime-radiant-inc/greenfield, which has 292 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on August 6, 2026.
Source: prime-radiant-inc/greenfield on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.