api-and-interface-desi…
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Exploratory QA of web apps: find bugs, evidence, reports.
Claude Code
$ npx -y skills add kevinnft/ai-agent-skills --skill dogfood --agent claude-code
Codex
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a codex -y
Cursor
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a cursor -y
Gemini CLI
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a gemini-cli -y
GitHub Copilot
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a github-copilot -y
OpenCode
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a opencode -y
Windsurf
$ npx skills add kevinnft/ai-agent-skills --skill dogfood -a windsurf -y
name: dogfood
description: "Exploratory QA of web apps: find bugs, evidence, reports."
version: 1.0.0
metadata:
hermes:
tags: [qa, testing, browser, web, dogfood]
related_skills: []
origin: aggregated
source_license: MIT
source_repo: NousResearch/hermes-agent
source_url: https://github.com/NousResearch/hermes-agent/tree/main/skills/dogfood
language: enThis skill guides you through systematic exploratory QA testing of web applications using the browser toolset. You will navigate the application, interact with elements, capture evidence of issues, and produce a structured bug report.
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`)
Follow this 5-phase systematic workflow:
1. Create the output directory structure:
{output_dir}/
├── screenshots/ # Evidence screenshots
└── report.md # Final report (generated in Phase 5)2. Identify the testing scope based on user input. 3. Build a rough sitemap by planning which pages and features to test:
For each page or feature in your plan:
1. **Navigate** to the page:
browser_navigate(url="https://example.com/page")
2. **Take a snapshot** to understand the DOM structure:
browser_snapshot()
3. **Check the console** for JavaScript errors:
browser_console(clear=true)
Do this after every navigation and after every significant interaction. Silent JS errors are high-value findings.
4. **Take an annotated screenshot** to visually assess the page and identify interactive elements:
browser_vision(question="Describe the page layout, identify any visual issues, broken elements, or accessibility concerns", annotate=true)
The `annotate=true` flag overlays numbered `[N]` labels on interactive elements. Each `[N]` maps to ref `@eN` for subsequent browser commands.
5. **Test interactive elements** systematically:
6. **After each interaction**, check for:
For every issue found:
1. **Take a screenshot** showing the issue:
browser_vision(question="Capture and describe the issue visible on this page", annotate=false)
Save the `screenshot_path` from the response — you will reference it in the report.
2. **Record the details**:
3. **Classify the issue** using the issue taxonomy (see `references/issue-taxonomy.md`):
1. Review all collected issues. 2. De-duplicate — merge issues that are the same bug manifesting in different places. 3. Assign final severity and category to each issue. 4. Sort by severity (Critical first, then High, Medium, Low). 5. Count issues by severity and category for the executive summary.
Generate the final report using the template at `templates/dogfood-report-template.md`.
The report must include: 1. **Executive summary** with total issue count, breakdown by severity, and testing scope 2. **Per-issue sections** with:
3. **Summary table** of all issues 4. **Testing notes** — what was tested, what was not, any blockers
Save the report to `{output_dir}/report.md`.
| Tool | Purpose | |------|---------| | `browser_navigate` | Go to a URL | | `browser_snapshot` | Get DOM text snapshot (accessibility tree) | | `browser_click` | Click an element by ref (`@eN`) or text | | `browser_type` | Type into an input field | | `browser_scroll` | Scroll up/down on the page | | `browser_back` | Go back in browser history | | `browser_press` | Press a keyboard key | | `browser_vision` | Screenshot + AI analysis; use `annotate=true` for element labels | | `browser_console` | Get JS console output and errors |
191 attribution-first agent skills for Hermes Agent, Claude Code, Cursor — one installer, 28 categories, searchable catalog. See NOTICE for upstream attribution.
Guides stable API and interface design. Use when designing APIs, module boundaries, or any public interface. Use when creating…
Tests in real browsers. Use when building or debugging anything that runs in a browser. Use when you need to inspect the DOM,…
Automates CI/CD pipeline setup. Use when setting up or modifying build and deployment pipelines. Use when you need to automate…
Conducts multi-axis code review. Use before merging any change. Use when reviewing code written by yourself, another agent, or a…
Simplifies code for clarity. Use when refactoring code for clarity without changing behavior. Use when code works but is harder…
Optimizes agent context setup. Use when starting a new session, when agent output quality degrades, when switching between tasks,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.