$npx -y skills add mvschwarz/openrig --skill dogfoodSystematically explore and test a web application to find bugs, UX issues, and other problems. Use when asked to "dogfood", "QA", "exploratory test", "find issues", "bug hunt", "test this app/site/platform", or review the quality of a web application. Produces a structured report
| 1 | # Dogfood |
| 2 | |
| 3 | Systematically explore a web application, find issues, and produce a report with full reproduction evidence for every finding. |
| 4 | |
| 5 | ## Setup |
| 6 | |
| 7 | Only the **Target URL** is required. Everything else has sensible defaults -- use them unless the user explicitly provides an override. |
| 8 | |
| 9 | | Parameter | Default | Example override | |
| 10 | |-----------|---------|-----------------| |
| 11 | | **Target URL** | _(required)_ | `vercel.com`, `http://localhost:3000` | |
| 12 | | **Session name** | Slugified domain (e.g., `vercel.com` -> `vercel-com`) | `--session my-session` | |
| 13 | | **Output directory** | `./dogfood-output/` | `Output directory: /tmp/qa` | |
| 14 | | **Scope** | Full app | `Focus on the billing page` | |
| 15 | | **Authentication** | None | `Sign in to user@example.com` | |
| 16 | |
| 17 | If the user says something like "dogfood vercel.com", start immediately with defaults. Do not ask clarifying questions unless authentication is mentioned but credentials are missing. |
| 18 | |
| 19 | Always use `agent-browser` directly -- never `npx agent-browser`. The direct binary uses the fast Rust client. `npx` routes through Node.js and is significantly slower. |
| 20 | |
| 21 | ## Workflow |
| 22 | |
| 23 | ``` |
| 24 | 1. Initialize Set up session, output dirs, report file |
| 25 | 2. Authenticate Sign in if needed, save state |
| 26 | 3. Orient Navigate to starting point, take initial snapshot |
| 27 | 4. Explore Systematically visit pages and test features |
| 28 | 5. Document Screenshot + record each issue as found |
| 29 | 6. Wrap up Update summary counts, close session |
| 30 | ``` |
| 31 | |
| 32 | ### 1. Initialize |
| 33 | |
| 34 | ```bash |
| 35 | mkdir -p {OUTPUT_DIR}/screenshots {OUTPUT_DIR}/videos |
| 36 | ``` |
| 37 | |
| 38 | Copy the report template into the output directory and fill in the header fields: |
| 39 | |
| 40 | ```bash |
| 41 | cp {SKILL_DIR}/templates/dogfood-report-template.md {OUTPUT_DIR}/report.md |
| 42 | ``` |
| 43 | |
| 44 | Start a named session: |
| 45 | |
| 46 | ```bash |
| 47 | agent-browser --session {SESSION} open {TARGET_URL} |
| 48 | agent-browser --session {SESSION} wait --load networkidle |
| 49 | ``` |
| 50 | |
| 51 | ### 2. Authenticate |
| 52 | |
| 53 | If the app requires login: |
| 54 | |
| 55 | ```bash |
| 56 | agent-browser --session {SESSION} snapshot -i |
| 57 | # Identify login form refs, fill credentials |
| 58 | agent-browser --session {SESSION} fill @e1 "{EMAIL}" |
| 59 | agent-browser --session {SESSION} fill @e2 "{PASSWORD}" |
| 60 | agent-browser --session {SESSION} click @e3 |
| 61 | agent-browser --session {SESSION} wait --load networkidle |
| 62 | ``` |
| 63 | |
| 64 | For OTP/email codes: ask the user, wait for their response, then enter the code. |
| 65 | |
| 66 | After successful login, save state for potential reuse: |
| 67 | |
| 68 | ```bash |
| 69 | agent-browser --session {SESSION} state save {OUTPUT_DIR}/auth-state.json |
| 70 | ``` |
| 71 | |
| 72 | ### 3. Orient |
| 73 | |
| 74 | Take an initial annotated screenshot and snapshot to understand the app structure: |
| 75 | |
| 76 | ```bash |
| 77 | agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/initial.png |
| 78 | agent-browser --session {SESSION} snapshot -i |
| 79 | ``` |
| 80 | |
| 81 | Identify the main navigation elements and map out the sections to visit. |
| 82 | |
| 83 | ### 4. Explore |
| 84 | |
| 85 | Read [references/issue-taxonomy.md](references/issue-taxonomy.md) for the full list of what to look for and the exploration checklist. |
| 86 | |
| 87 | **Strategy -- work through the app systematically:** |
| 88 | |
| 89 | - Start from the main navigation. Visit each top-level section. |
| 90 | - Within each section, test interactive elements: click buttons, fill forms, open dropdowns/modals. |
| 91 | - Check edge cases: empty states, error handling, boundary inputs. |
| 92 | - Try realistic end-to-end workflows (create, edit, delete flows). |
| 93 | - Check the browser console for errors periodically. |
| 94 | |
| 95 | **At each page:** |
| 96 | |
| 97 | ```bash |
| 98 | agent-browser --session {SESSION} snapshot -i |
| 99 | agent-browser --session {SESSION} screenshot --annotate {OUTPUT_DIR}/screenshots/{page-name}.png |
| 100 | agent-browser --session {SESSION} errors |
| 101 | agent-browser --session {SESSION} console |
| 102 | ``` |
| 103 | |
| 104 | Use your judgment on how deep to go. Spend more time on core features and less on peripheral pages. If you find a cluster of issues in one area, investigate deeper. |
| 105 | |
| 106 | ### 5. Document Issues (Repro-First) |
| 107 | |
| 108 | Steps 4 and 5 happen together -- explore and document in a single pass. When you find an issue, stop exploring and document it immediately before moving on. Do not explore the whole app first and document later. |
| 109 | |
| 110 | Every issue must be reproducible. When you find something wrong, do not just note it -- prove it with evidence. The goal is that someone reading the report can see exactly what happ |