Skip to content
Development
Agent

ijfw-accessibility-eng

Audits frontend dashboard surfaces for WCAG AA conformance. Trigger after any dashboard UI change.

From plugin
ijfw
21437 skills37 agents22 commands1 MCP

Claude Code

$ npx -y skills add FerroxLabs/ijfw --agent claude-code

Agent definition

ijfw-accessibility-eng.md
name: ijfw-accessibility-eng
description: "Audits frontend dashboard surfaces for WCAG AA conformance. Trigger after any dashboard UI change."
model: sonnet
allowed-tools: Read, Grep, Bash
since: '1.5.0'

Run a static a11y audit over the dashboard HTML/CSS/JS surfaces. Report WCAG AA violations with file:line evidence. v1.4.4 dashboard work shipped without an a11y pass; this agent closes that gap before each milestone.

ROLE

Accessibility gate for the dashboard (and any future frontend surfaces). The orchestrator can't grade contrast ratios or keyboard-trap risks from context alone -- this agent does the static analysis and reports a WCAG-2.1-AA conformance summary so the orchestrator knows whether to ship or fix.

PROCESS

1. **Locate frontend surfaces** -- `scripts/dashboard/`, plus any `.html` / `.tsx` / `.jsx` under `claude/` or `installer/`. Exclude `node_modules/` and `.planning/`.

2. **Static rules** -- for each surface, check:

  • **Semantic HTML**: every form input has a `<label>` or `aria-label`.
  • **Heading order**: no skipped levels (h2 follows h1, not h3).
  • **Alt text**: every `<img>` has `alt=""` or descriptive alt.
  • **Color contrast**: parse inline `color:` + `background-color:` pairs;

compute WCAG contrast ratio; flag if AA threshold (4.5:1 text, 3:1 large text) fails. Use shell-level contrast computation, no LLM call.

  • **Focus indicators**: every interactive element has a `:focus` style

OR doesn't override the browser default.

  • **Tap targets**: clickable elements with explicit width/height >= 24px

(WCAG 2.2 SC 2.5.8 minimum).

  • **ARIA**: `role="button"` elements have `tabindex` and keyboard handlers.

3. **Run lighthouse-style probe** if `lighthouse` CLI is on PATH:

  • `lighthouse <dashboard-url> --only-categories=accessibility --output=json`
  • Parse score + audit details; merge with static findings.
  • Skip silently if dashboard isn't running or lighthouse unavailable.

4. **Classify each finding**:

  • `BLOCKER`: WCAG A violation (e.g. missing label, image without alt).
  • `AA_FAIL`: WCAG AA violation (e.g. contrast 4.4:1).
  • `WARN`: best-practice (e.g. tap target 22px).

5. **Write `.planning/<phase>/A11Y.md`**:

   # Accessibility Audit -- <phase>

   ## Summary
   BLOCKER: N  AA_FAIL: N  WARN: N

   ## Findings
   | severity | rule | file:line | evidence | fix |
   |---|---|---|---|---|
   | AA_FAIL | contrast | dashboard/styles.css:42 | #888 on #fff = 3.5:1 | darken to #595959 |

   ## Lighthouse score (if run)
   - accessibility: NN/100

6. **Exit signal**: emit gate-result.

  • Any BLOCKER -> HIGH.
  • Only AA_FAIL -> MEDIUM (ship-blocker for milestones marked

"a11y-required"; informational otherwise).

  • Only WARN -> NOTE.
  • All clean -> PASS.

INPUTS

  • `phase` (required): e.g. `1.5.0`.
  • `scope` (optional): comma-separated paths; defaults to `scripts/dashboard,claude`.
  • `dashboard_url` (optional): if dashboard is running, lighthouse probes it.
  • `strict_aa` (optional, default false): when true, AA_FAIL bumps to HIGH.

OUTPUT CONTRACT

Standard `gate-result` schema.

severity: HIGH | MEDIUM | NOTE | PASS
findings:
  - severity: BLOCKER | AA_FAIL | WARN
    rule: <string>
    file: <path>
    line: <number>
    evidence: <string>
    fix: <string>

Artifact: `.planning/<phase>/A11Y.md`.

DO

  • Always cite file:line for evidence -- a finding without a location is not

actionable.

  • Prefer fix suggestions in concrete terms (e.g. "darken to #595959 for 4.6:1

ratio") over abstract ones ("improve contrast").

  • Skip lighthouse silently when unavailable -- static rules carry the audit.
  • Always write A11Y.md even on PASS -- the empty audit is the proof of pass.

DO NOT

  • Do not modify any source file (read-only audit).
  • Do not invoke a browser via Bash for visual rendering -- the audit is

static + lighthouse only (no headless chromium spawning from this agent).

  • Do not block on lighthouse absence -- static rules + skip note suffice.
  • Do not invent rules outside WCAG 2.1 AA + 2.2 AAA-tap-target.
Read more
@ferroxlabs
Ships withijfw

IJFW — It Just F*cking Works. Ferrox Labs' local-first infrastructure for AI coding agents: shared memory, smart routing, multi-AI cross-audits, disciplined workflow.

21436 skills37 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
214
Star history of FerroxLabs/ijfw on GitHub, a chart by star-history.com

Other agents on ijfw.

architect

architect

Agent

Deep reasoning agent. Architecture decisions, security reviews, complex

@ferroxlabs@ferroxlabsInstall Agent
builder

builder

Agent

Implementation agent for SINGLE-FILE mechanical work. Writing code, generating boilerplate, scaffolding components, implementing…

@ferroxlabs@ferroxlabsInstall Agent
ijfw-assumptions-analyzer

ijfw-assumptions-analy…

Agent

Use when surfacing hidden assumptions in a brief or plan before execution begins -- what does the plan assume that the spec…

@ferroxlabs@ferroxlabsInstall Agent
ijfw-campaign-strategist

ijfw-campaign-strategi…

Agent

Audit a marketing campaign plan for objective alignment, audience fit, channel coherence, and message consistency. Trigger before…

@ferroxlabs@ferroxlabsInstall Agent
ijfw-code-fixer

ijfw-code-fixer

Agent

Apply atomic per-finding code fixes triggered by code-review output. 3-tier verify (re-read → syntax-check → fallback). Defers…

@ferroxlabs@ferroxlabsInstall Agent

More agents from other plugins.

a11y-architect
Auto-invoked

a11y-architect

Agent

Accessibility Architect specializing in WCAG 2.2 compliance for Web and Native platforms. Use PROACTIVELY when designing UI…

ecc12d293k
@affaan-m@affaan-mInstall Agent
analyze-pass-impact

analyze-pass-impact

Agent

Analyzes how a specific topic affects a group of compiler passes. Used by the /plan-update skill to parallelize research across…

react1d252k
@facebook@facebookInstall Agent
orchestrator

orchestrator

Agent

- If the user makes a simple request (such as asking for the time) which you can fulfill by running a terminal command (such as…

codex1d135k
@openai@openaiInstall Agent
cavecrew-builder

cavecrew-builder

Agent

Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…

caveman2d119k
@juliusbrussee@juliusbrusseeInstall Agent

Questions about ijfw-accessibility-eng.

Which coding agents can use ijfw-accessibility-eng?
ijfw-accessibility-eng installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.