{"id":50365431,"url":"https://github.com/tchivs/browser-qa-skill","last_synced_at":"2026-05-30T03:30:57.326Z","repository":{"id":358090718,"uuid":"1239983114","full_name":"tchivs/browser-qa-skill","owner":"tchivs","description":"General browser QA orchestrator skill for web apps, local dev stacks, and Docker Compose deployments.","archived":false,"fork":false,"pushed_at":"2026-05-15T17:07:48.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-15T19:39:45.252Z","etag":null,"topics":["agent-browser","agent-skills","browser-qa","opencode","qa"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tchivs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-15T16:39:36.000Z","updated_at":"2026-05-15T17:07:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tchivs/browser-qa-skill","commit_stats":null,"previous_names":["tchivs/browser-qa-skill"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/tchivs/browser-qa-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchivs%2Fbrowser-qa-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchivs%2Fbrowser-qa-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchivs%2Fbrowser-qa-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchivs%2Fbrowser-qa-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tchivs","download_url":"https://codeload.github.com/tchivs/browser-qa-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchivs%2Fbrowser-qa-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33679305,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-browser","agent-skills","browser-qa","opencode","qa"],"created_at":"2026-05-30T03:30:56.597Z","updated_at":"2026-05-30T03:30:57.321Z","avatar_url":"https://github.com/tchivs.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# browser-qa\n\n[![GitHub repo](https://img.shields.io/badge/GitHub-tchivs%2Fbrowser--qa--skill-181717?style=flat\u0026logo=github)](https://github.com/tchivs/browser-qa-skill)\n[![Skill](https://img.shields.io/badge/skill-browser--qa-000000?style=flat)](./browser-qa/SKILL.md)\n[![OpenCode](https://img.shields.io/badge/OpenCode-ready-000000?style=flat)](https://opencode.ai/docs/skills/)\n[![agent-browser](https://img.shields.io/badge/agent--browser-supported-000000?style=flat)](https://www.npmjs.com/package/agent-browser)\n[![Install](https://img.shields.io/badge/install-npx%20skills%20add-000000?style=flat)](#install)\n[![License: MIT](https://img.shields.io/badge/license-MIT-000000?style=flat)](./LICENSE)\n\n[中文文档](./README.zh-CN.md)\n\nYour agent says \"the app works\". This makes it prove it in a browser.\n\n`browser-qa` is an agent skill for real browser QA. It checks the app like a user would: services are up, pages render, login works, navigation is clickable, modals fit on mobile, console errors are visible, failed requests are investigated, and backend logs are part of the story.\n\nWorks with local dev servers, Docker Compose stacks, deployed URLs, React/Vite/Next apps, admin dashboards, and most browser-based products.\n\n## Install\n\nGlobal install:\n\n```bash\nnpx skills add tchivs/browser-qa-skill --skill browser-qa -g\n```\n\nProject install:\n\n```bash\nnpx skills add tchivs/browser-qa-skill --skill browser-qa\n```\n\nFor OpenCode, the easiest manual install is to ask your agent to install it for you.\n\nGlobal OpenCode prompt:\n\n```text\nInstall the browser-qa skill globally for OpenCode from this GitHub repository:\nhttps://github.com/tchivs/browser-qa-skill\n\nUse browser-qa/SKILL.md as the source file and install it to:\n~/.config/opencode/skills/browser-qa/SKILL.md\n\nAlso copy browser-qa/evals/ if supported. Do not modify the skill content.\n```\n\nProject OpenCode prompt:\n\n```text\nInstall the browser-qa skill for this project from this GitHub repository:\nhttps://github.com/tchivs/browser-qa-skill\n\nUse browser-qa/SKILL.md as the source file and install it to:\n.opencode/skills/browser-qa/SKILL.md\n\nAlso copy browser-qa/evals/ if supported. Do not modify the skill content.\n```\n\nShell fallback, global:\n\n```bash\ngit clone https://github.com/tchivs/browser-qa-skill.git\nmkdir -p ~/.config/opencode/skills/browser-qa\ncp browser-qa-skill/browser-qa/SKILL.md ~/.config/opencode/skills/browser-qa/SKILL.md\ncp -R browser-qa-skill/browser-qa/evals ~/.config/opencode/skills/browser-qa/evals\n```\n\nShell fallback, project:\n\n```bash\ngit clone https://github.com/tchivs/browser-qa-skill.git /tmp/browser-qa-skill\nmkdir -p .opencode/skills/browser-qa\ncp /tmp/browser-qa-skill/browser-qa/SKILL.md .opencode/skills/browser-qa/SKILL.md\ncp -R /tmp/browser-qa-skill/browser-qa/evals .opencode/skills/browser-qa/evals\n```\n\n## Use\n\nAsk your coding agent:\n\n```text\nRun a browser QA pass on this dev deployment. Check login, navigation, console errors, and failed API requests.\n```\n\n```text\nDocker says all services are up, but the page is blank. Find out whether it is a frontend, API, or backend problem.\n```\n\n```text\nThe admin page works on desktop, but the mobile drawer and modal feel broken. Verify the mobile flow and report issues.\n```\n\nThe skill will guide the agent to discover the app, open it in a real browser, inspect rendered UI, check network/console failures, correlate logs, and return a concise QA report.\n\n## What it catches\n\n- Blank pages hidden behind \"healthy\" containers\n- Broken login redirects and missing tokens\n- Wrong API base URLs and `/api/api/...` style mistakes\n- UI flows that silently fail without a visible error\n- Mobile dialogs clipped by the viewport or keyboard\n- Sidebars, drawers, and overlays with broken z-index behavior\n- Tables and tab bars that overflow on small screens\n- Buttons, links, and inputs without accessible names or labels\n- Backend 500s that never surface clearly in the UI\n\n## Project QA Profile\n\nMost QA skills waste time rediscovering the same app every run. `browser-qa` uses a project-local profile instead.\n\nOn first run, it infers the app from files such as:\n\n- `README.md`\n- `package.json`\n- `pnpm-workspace.yaml`\n- `docker-compose.yml`\n- `.env.example`\n- `vite.config.*`, `next.config.*`, `nx.json`\n\nThen it saves non-secret facts to:\n\n```text\n.browser-qa/profile.json\n```\n\nThe profile stores URLs, health checks, service names, login paths, smoke paths, and credential **environment variable names**. It must not store passwords, tokens, cookies, or production secrets.\n\nFuture runs load the profile first and only refresh discovery when files changed, URLs are stale, or the user explicitly asks to rediscover the app.\n\n## Helper scripts\n\nThe bundled scripts are dependency-free Node.js utilities for deterministic checks. They do not run browser automation and do not install global packages.\n\nCreate a profile template:\n\n```bash\nnode browser-qa/scripts/create-profile-template.mjs --mode docker-compose\n```\n\nValidate a project profile:\n\n```bash\nnode browser-qa/scripts/validate-profile.mjs --profile .browser-qa/profile.json\n```\n\nCheck this skill repository before publishing:\n\n```bash\nnode browser-qa/scripts/doctor.mjs\n```\n\n## How it works\n\n```text\ndiscover project → create/reuse QA profile → health check services\n→ open browser → click critical flows → inspect console/network\n→ correlate logs → report what passed, failed, and remains risky\n```\n\nThe skill prefers [`agent-browser`](https://www.npmjs.com/package/agent-browser) for browser interaction, but it should not assume the CLI is already installed or silently install global packages.\n\nThe agent should check first:\n\n```bash\ncommand -v agent-browser\n```\n\nIf it is installed, the agent should load the live CLI guide before browser actions:\n\n```bash\nagent-browser skills get core\n```\n\nIf it is missing, install it only when the user explicitly asks to set up browser QA tooling, or fall back to an existing project Playwright workflow when available. Playwright is also the better path when the user asks to create durable E2E tests.\n\n## Skill handoffs\n\n`browser-qa` is the orchestrator. It should hand off when the task becomes specialized:\n\nThese companion skills are optional. You do not need to install them before using `browser-qa`; the skill should still run generic browser QA without them.\n\n| Need | Better follow-up skill |\n| --- | --- |\n| Write durable Playwright tests | `playwright-best-practices` |\n| Design an E2E test strategy | `e2e-testing-patterns` |\n| Run a full a11y/responsive/performance audit | `audit` |\n| Check React code health after fixes | `react-doctor` |\n| Fix React rendering or bundle performance | `react-performance-optimization` |\n| Fix Tailwind v4 or shadcn/ui issues | `tailwind-v4-shadcn`, `shadcn-ui` |\n| Repair responsive layout | `adapt` |\n| Harden edge cases, overflow, i18n, errors | `harden` |\n| Polish visual details | `polish` |\n\n## Repository layout\n\n```text\nbrowser-qa-skill/\n├── browser-qa/\n│   ├── SKILL.md\n│   ├── evals/\n│   │   └── evals.json\n│   └── scripts/\n│       ├── create-profile-template.mjs\n│       ├── doctor.mjs\n│       └── validate-profile.mjs\n├── README.md\n├── README.zh-CN.md\n├── LICENSE\n└── .gitignore\n```\n\nThe skill lives in `browser-qa/SKILL.md` so the directory name matches `name: browser-qa`, which keeps strict skill importers happy.\n\n## Publish / ranking\n\nFor skill.sh-style discovery, a public GitHub repo plus installs through the skills CLI may be enough. When users run:\n\n```bash\nnpx skills add tchivs/browser-qa-skill --skill browser-qa\n```\n\nthe skills ecosystem may use anonymous install telemetry to discover the skill and rank it by installation count. In that model, there is no separate manual upload step: keep the repo public, make the skill installable, share the install command, and installs drive visibility.\n\nIf a registry also supports Add Skills / Import Repository, paste this repo URL as an optional extra step:\n\n```text\nhttps://github.com/tchivs/browser-qa-skill\n```\n\n## Contributing\n\nIssues and PRs are welcome. Good improvements include:\n\n- better browser QA heuristics\n- more realistic eval prompts\n- clearer report templates\n- additional project profile fields that do not store secrets\n- compatibility notes for more agent runtimes\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftchivs%2Fbrowser-qa-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftchivs%2Fbrowser-qa-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftchivs%2Fbrowser-qa-skill/lists"}