opquast-digital-quality — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited opquast-digital-quality (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Canonical source:examples/OPQUAST_DIGITAL_QUALITY_BEST_PRACTICES.mdinmgifford/ACCESSIBILITY.mdThis skill is derived from that file. When in doubt, the example is authoritative.
Apply the Opquast Digital Quality Checklist (Version 5, 2025-2030) when building or reviewing web projects. The framework contains 245 rules across 14 categories covering content, privacy, e-commerce, forms, accessibility, security, performance, and more.
Rules are published under Creative Commons BY-SA 4.0. Agents may reference and cite rule text; attribute Opquast and respect the ShareAlike licence — derivatives must use the same licence. See opquast.com for the authoritative source.
| Level | Meaning |
|---|---|
| Critical | Completely blocks access, purchase, or task completion for a user group |
| Serious | Significantly impairs access or usability; workaround unreasonable to expect |
| Moderate | Creates friction; workaround available but burdensome |
| Minor | Best-practice gap; marginal impact |
Category-level severity guidance:
| Category | Rules | Key Requirements | |
|---|---|---|---|
| Content | 1–14 | Metadata (description + OG tags), explicit dates, <abbr> for acronyms, data tables for charts, labelled ads, moderation/abuse-report mechanisms | |
| Personal Data / Privacy | 15–29 | Privacy link in footer, documented data access/modification process, no third-party-only login, generic auth-failure messages, Referrer-Policy, HTTPS for sensitive data, no sensitive data in URLs | |
| E-Commerce | 30–68 | No pre-checked opt-ins, availability/delivery time/cost before checkout, explicit pricing incl. tax, two+ payment methods, order confirmation email, invoices online | |
| Forms | 69–98 | <label for="...">, format/case-sensitivity hints, required indicated in text, password strength + show/hide, aria-invalid, aria-describedby, preserve data on error, correct input type/autocomplete, paste not blocked, disabled buttons not aria-hidden | |
| Identification | 99–115 | Unique page titles (`Page \ | Site), lang` attribute, favicon, address/phone in footer, two+ contact methods, response-time/hours stated |
| Images/Media | 116–127 | Meaningful alt, empty alt="" for decorative, image-link alt describes destination, transcripts + synchronised captions, no autoplay, pausable media | |
| Internationalisation | 128–135 | International dialling codes, country in addresses, hreflang/visible language indicator, lang on <html> and inline changes, translated-language link labels | |
| Links | 136–152 | Descriptive anchor text (no "click here"), tel: protocol, new-tab warning, file type + size for downloads, no broken internal links | |
| Navigation | 153–172 | Public content without forced login, no nav pop-ups, homepage link, breadcrumbs, consistent nav placement, visible icon labels, skip links, visible :focus-visible, logical tab order, internal search, sitemap | |
| Newsletter | 173–179 | Confirmed opt-in, unsubscribe link, one-click unsubscribe, archives online, stated frequency | |
| Presentation | 180–196 | Consistent visual identity, no colour-only info, contrast 4.5:1 normal / 3:1 large text, meaning survives with styles off, 24×24px+ touch targets, no zoom blocking, responsive layout, print styles | |
| Security | 197–217 | HTTPS everywhere + HSTS, no mixed content, self-service password reset, no plain-text passwords, X-Content-Type-Options, X-Frame-Options/frame-ancestors, CSP, SRI on third-party scripts, no exposed server versions, SPF/DKIM/DMARC | |
| Server/Performance | 218–230 | robots.txt, sitemap.xml, proper 404 status (not 200), custom error page with nav, gzip/Brotli, cache-control headers, minified CSS/JS | |
| Structure/Code | 231–244 | Machine-readable dates (<time datetime>), UTF-8, unique IDs, no meta refresh, heading hierarchy h1>h2>h3, tagged (not scanned) PDFs, <caption>/<th scope> on data tables |
Not all 14 categories apply to every project:
Navigation, Presentation, Security, Server/Performance, Structure/Code
Internationalisation (multi-language), Personal Data/Privacy (user accounts/data collection)
For the complete rule text, code examples, and rule numbers, consult the canonical Opquast guide or the official checklist directly — this skill summarizes the categories and highest-value patterns rather than reproducing all 245 rules verbatim.
When generating or reviewing code, apply rules as implementation requirements:
proper alt text
print styles
caching
After implementation, verify against applicable rules. Common automated checks:
alt attributes<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Page description here." />
<meta property="og:title" content="Page Title | Site Name" />
<meta property="og:description" content="Page description for sharing." />
<title>Page Title | Site Name</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
</head>
<body>
<a href="#main" class="skip-link">Skip to main content</a>
<nav aria-label="Main navigation"><!-- ... --></nav>
<main id="main"><!-- ... --></main>
<footer>
<a href="/privacy">Privacy Policy</a>
<a href="/terms">Terms of Use</a>
</footer>
</body>
</html>Use native required on native inputs. aria-required is redundant when required is present and should be omitted to avoid accessibility tree noise (rule 98 principle: don't add ARIA states that duplicate native semantics). Use aria-required only on custom widgets (role="combobox" etc.). Also indicate required state in visible text — an asterisk alone is insufficient unless the convention is explained (rule 71).
<label for="email">
Email address <span aria-hidden="true">*</span> <span class="hint">(required)</span>
<span class="hint" id="email-hint">Example: [email protected]</span>
</label>
<input id="email" type="email" autocomplete="email"
required aria-describedby="email-hint" /><label for="password">Password</label>
<div class="password-wrapper">
<input id="password" type="password" aria-describedby="password-hint" />
<button type="button" aria-controls="password" aria-pressed="false">
Show password
</button>
</div>Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Security-Policy: default-src 'self';
Referrer-Policy: strict-origin-when-cross-originDo not expose server software versions in response headers (rule 213) — remove or obfuscate Server and X-Powered-By. Apply Subresource Integrity to third-party scripts/stylesheets (rule 214):
<script src="https://cdn.example.com/library.min.js"
integrity="sha384-<hash>" crossorigin="anonymous"></script>:focus-visible {
outline: 3px solid #005fcc;
outline-offset: 2px;
}
body {
color: #1a1a1a; /* ~16:1 contrast on white */
background: #ffffff;
}@media print {
nav, header, footer, .sidebar, .no-print { display: none; }
body { font-size: 12pt; color: #000; }
a[href]::after { content: " (" attr(href) ")"; }
}<table>
<caption>Quarterly revenue by region (USD thousands)</caption>
<thead>
<tr><th scope="col">Region</th><th scope="col">Q1</th></tr>
</thead>
<tbody>
<tr><th scope="row">North America</th><td>1,200</td></tr>
</tbody>
</table>Opquast complements WCAG 2.2 rather than replacing it. Key mappings:
| Opquast Rules | WCAG Criteria |
|---|---|
116 (decorative images alt="") | 1.1.1 Non-text Content (A) |
| 117-118 (meaningful alt text) | 1.1.1 Non-text Content (A) |
| 121-122 (transcripts, captions) | 1.2.2, 1.2.3, 1.2.5 |
| 124-127 (no autoplay, pausable) | 1.4.2, 2.2.2 |
| 131-132 (lang attribute) | 3.1.1, 3.1.2 |
| 164 (skip links) | 2.4.1 Bypass Blocks (A) |
| 165 (focus visible) | 2.4.7, 2.4.11 Focus Visible/Appearance |
| 166 (keyboard operable) | 2.1.1 Keyboard (A) |
| 167 (logical tab order) | 2.4.3 Focus Order (A) |
| 181 (not colour alone) | 1.4.1 Use of Color (A) |
| 182 (contrast) | 1.4.3, 1.4.6, 1.4.11 Contrast |
| 186 (touch targets 24×24px min) | 2.5.8 Target Size Minimum (AA, WCAG 2.2) |
| 193 (no zoom block) | 1.4.4 Resize Text (AA) |
| 69-70 (labels, instructions) | 1.3.1, 3.3.2 |
| 79-80 (error identification) | 3.3.1, 3.3.3 |
Use Opquast as a holistic quality baseline and layer WCAG testing for full accessibility compliance.
Several Opquast categories directly align with SUSTAINABILITY.md and the Web Sustainability Guidelines:
directly reduce data transfer and energy per page view
reduce need for separate mobile sites
When applying Opquast Server/Performance rules, cross-reference with SUSTAINABILITY.md for additional guidance on carbon-aware delivery and asset optimisation.
Apply to every project; skip categories not in scope:
Content & Identification
<meta name="description"> and OG tags on every page<title> in Page | Site format<html lang="..."> present and correct<link rel="icon"> presentForms
<label>required used; aria-required omitted on native inputsaria-invalid="true" set on invalid fieldsaria-describedby; prior data preserved on errorinput type and autocomplete valuesaria-hiddenImages & Media
alt=""alt; image links describe the destinationNavigation & Keyboard
:focus-visible styles defined; outline: none not used without replacementPresentation
user-scalable=no and maximum-scale not usedSecurity
X-Content-Type-Options: nosniff presentX-Frame-Options or CSP frame-ancestors presentServer/Performance
robots.txt present; sitemap.xml present404 status for missing pages (not 200)Structure/Code
<meta charset="UTF-8"> in every <head>id attributes within a page<meta http-equiv="refresh">h1 > h2 > h3, no skips)<caption> and <th scope="...">See WCAG relationship table above. Opquast covers all of WCAG 2.2 AA and extends well beyond it into security, privacy, e-commerce, and performance.
id: opquast, id: opquast-checklistStandards horizon: These rules target WCAG 2.2 AA alongside Opquast v5 (2025-2030). WCAG 3.0 is in development. Monitor: <https://www.w3.org/TR/wcag-3.0/>
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.