OptiA11y.Core 0.4.0

dotnet add package OptiA11y.Core --version 0.4.0
                    
NuGet\Install-Package OptiA11y.Core -Version 0.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OptiA11y.Core" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OptiA11y.Core" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="OptiA11y.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OptiA11y.Core --version 0.4.0
                    
#r "nuget: OptiA11y.Core, 0.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OptiA11y.Core@0.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OptiA11y.Core&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=OptiA11y.Core&version=0.4.0
                    
Install as a Cake Tool

OptiA11y.Core

The accessibility rules engine behind OptiA11y, editorial accessibility assistance for Optimizely content authors. Not a compliance certification tool — a clean audit result means OptiA11y found no issues it was able to detect, not proof of WCAG or ADA conformance.

This package has zero Optimizely/CMS dependencies (only HtmlAgilityPack) and is fully unit-testable on its own. It defines the ports-and-adapters core that every host adapter (PaaS, SaaS) and the optional rendered-style slice funnel into:

host content source → adapter → AuditDocument (ContentFragment[]) → RuleEngine → Finding[]

What's in this package

  • Model — AuditDocument, Finding, SourceLocation, and the typed ContentFragment shapes (image, link, heading, table, text, media, form field, button, iframe, and more) that every rule operates against. Rules never see raw HTML or a DOM.
  • Parsing.HtmlFragmentParser — the single, shared entry point that turns raw HTML into fragments. Every host adapter funnels through this, so rule behaviour is identical regardless of where the content came from.
  • Rules — over 30 independently DI-registrable IContentRule implementations covering alt text, headings, links, tables, forms, buttons, ARIA usage, language, colour contrast, reading level, and more. Each declares its own WCAG success criterion and level.
  • RuleEngine — runs a set of rules against an AuditDocument and returns findings ordered deterministically by location.

The Confidence model — the honesty mechanism at the centre of this package

Every Finding carries a Confidence:

  • Fail — a deterministic, unambiguous violation (a missing alt attribute, a skipped heading level, a contrast ratio below threshold). Reserved for structural facts a rule can be certain about.
  • NeedsReview — a heuristic judgement (alt text quality, link text descriptiveness, reading level). The tool cannot know editorial intent, so it flags something worth a human's attention rather than asserting a defect.

Heuristic rules must never report Fail — this is what stops the tool from manufacturing false assurance.

Using this package directly

Most consumers will want OptiA11y.Cms (the Optimizely CMS 13 installable add-on) rather than this package directly. Reach for OptiA11y.Core on its own if you're building a custom adapter for a content source OptiA11y.Cms doesn't cover — implement HtmlFragmentParser-based fragment extraction for your source, register the rules you want via RuleEngine, and evaluate an AuditDocument.

See the main repository README for the full rule catalogue, architecture overview, and versioning notes (this package, OptiA11y.Rendering, and OptiA11y.Cms ship together and must be kept in sync).

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on OptiA11y.Core:

Package Downloads
OptiA11y.Cms

Editorial accessibility assistance for Optimizely CMS.

OptiA11y.Rendering

Editorial accessibility assistance for Optimizely CMS.

OptiA11y.Cms12

Editorial accessibility assistance for Optimizely CMS 12 (EPiServer.CMS.Core 12.x). Integrates the OptiA11y content audit panel into the CMS 12 edit UI.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 146 9/17/2026
0.3.2 130 9/17/2026
0.3.1 133 9/14/2026
0.3.0 123 9/14/2026