common-accessibility
Enforce WCAG 2.2 AA compliance with semantic HTML, ARIA roles, keyboard navigation, and color contrast standards for web UIs. Use…
Cross-stack selector and test-id policy for web and mobile automation. Use when writing or reviewing E2E/UI test locators, or adding data-testid/accessibility identifiers to components.
Claude Code
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability --agent claude-code
Codex
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a codex -y
Cursor
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a cursor -y
Gemini CLI
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a gemini-cli -y
GitHub Copilot
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a github-copilot -y
OpenCode
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a opencode -y
Windsurf
$ npx skills add hoangnguyen0403/agent-skills-standard --skill quality-engineering-selector-stability -a windsurf -y
name: quality-engineering-selector-stability
description: Cross-stack selector and test-id policy for web and mobile automation. Use when writing or reviewing E2E/UI test locators, or adding data-testid/accessibility identifiers to components.
metadata:
triggers:
files:
- "**/e2e/**/*.{ts,js}"
- "**/*.e2e.{ts,js}"
keywords:
- selector
- locator
- data-testid
- testID
- accessibilityIdentifier
- testTag
- stable locator
- selector drift`getByRole` / `getByLabel` > `getByTestId` (`data-testid`) > attribute CSS. Never XPath, `nth-child`, or generated class names.
Accessibility id > resource-id / `testTag` > predicate/uiautomator > XPath. Never XPath.
`<screen>-<element>-<role>`, kebab-case (e.g. `checkout-submit-button`).
Add ids to leaf interactive/assertable elements only, never layout wrappers. Never rename an existing id — ids are a public contract other tests depend on.
`rename` (id changed), `restructure` (DOM/tree moved), `i18n` (visible text changed, id untouched).
Prefer retrying assertions (`expect(locator).toHaveCount(...)`, `toHaveText([...])`) over immediate enumeration (`locator.all()`). `all()` samples count immediately and returns live positional locators without waiting, risking false-green empty iterations. Establish declared finite completion and exact expected identities before iterating. Never assume count alone freezes dynamic lists or guarantees membership stability; target elements by stable IDs via POM actions, never `.all()` indices.
The portable standards layer for AI coding agents. Sync once, then work in your own runtime.
Enforce WCAG 2.2 AA compliance with semantic HTML, ARIA roles, keyboard navigation, and color contrast standards for web UIs. Use…
Define deterministic guardrails for agent tool calls — protected paths, test-file locks during bug fixes, post-edit formatters,…
Apply REST API conventions — HTTP semantics, status codes, versioning, pagination, and OpenAPI standards for any framework. Use…
Audit structural debt, logic leakage, and monolithic components across Web, Mobile, and Backend codebases. Use when reviewing…
Draws architecture diagrams as editable draw.io files with a fixed house style, C4 levels, evidence-tagged shapes, and optional…
Enforce SOLID principles, guard-clause style, function size limits, and intention-revealing naming across all languages. Use when…
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.