Agent skill · operations · nousresearch
dogfood
Exploratory QA of web apps: find bugs, evidence, reports.
Why this skill is useful
Provides a structured workflow for exploratory QA testing that includes specific browser commands and evidence collection methods not commonly known.
What it needs
Requires browser_toolset installed locally. About 5k tokens when loaded. Last updated 2026-08-07. 226,679 stars on the source repository.
What this skill does
Dogfood: Systematic Web Application QA Testing Overview This skill guides you through systematic exploratory QA testing of web applications with browserexec. You will navigate the application, interact with elements, capture evidence of issues, and produce a structured bug report. Prerequisites The browser toolset must be enabled (browserexec). browserexec runs Python with pre-imported helpers (newtab, gotourl, waitforload, pageinfo, js, fillinput, clickatxy, capturescreenshot, cdp); browser state persists across calls, Python variables do not. A target URL and testing scope from the user Inputs The user provides: 1. Target URL — the entry point for testing 2. Scope — what areas/features to focus on (or "full site" for comprehensive testing) 3. Output directory (optional) — where to save screenshots and the report (default: ./dogfood-output) Workflow Follow this 5-phase systematic workflow: Phase 1: Plan 1. Create the output directory structure: 2. Identify the testing scope based on user input. 3. Build a rough sitemap by planning which pages and features to test: Landing/home page Navigation links (header, footer, sidebar) Key user flows (sign up, login, search, checkout, etc.) Forms and interactive elements Edge cases (empty states, error pages, 404s) Phase 2: Explore Batch each step's actions into one browserexec call. For each page or feature in your plan: 1. Navigate with a console hook installed. Register the hook on the tab before navigating so errors thrown during page load are captured too: Re-register the hook at the start of any later call that navigates. Silent JS errors are high-value findings. 2. Read the page structure — list visible interactive elements with their viewport centres (use cdp('Accessibility.getFullAXTree') and filter in Python when you need roles/names): 3. Visually assess the page: call capturescreenshot() and inspect the attached image for layout issues, broken elements, or accessibility concerns. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills nousresearch/dogfood