A11y Audit
alirezarezvani/claude-skills
Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases.
Skill de auditoria de acessibilidade para escanear, corrigir e verificar a conformidade WCAG 2.2 Nível A e AA em codebases React, Next.js, Vue, Angular, Svelte e HTML puro.
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-audit --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/engineering-team/a11y-audit .claude/skills/a11y-audit && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .claude/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-auditType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-audit --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/engineering-team/a11y-audit .agents/skills/a11y-audit && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .agents/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-audit --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/engineering-team/a11y-audit .cursor/skills/a11y-audit && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .cursor/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ricneves-ai/flowgrammers-skills.git --path engineering-team/a11y-audit--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-audit --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/engineering-team/a11y-audit .gemini/skills/a11y-audit && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .gemini/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-auditInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/engineering-team/a11y-audit .github/skills/a11y-audit && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .github/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ricneves-ai/flowgrammers-skills a11y-audit --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ricneves-ai/flowgrammers-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/engineering-team/a11y-audit .opencode/skills/a11y-audit && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "a11y-audit" agent skill from https://github.com/ricneves-ai/flowgrammers-skills/tree/main/engineering-team/a11y-audit into .opencode/skills/a11y-audit/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "a11y-audit", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
a11y-auditSkill de auditoria de acessibilidade para escanear, corrigir e verificar a conformidade WCAG 2.2 Nível A e AA em codebases React, Next.js, Vue, Angular, Svelte e HTML puro.
A11y Audit is an agent skill from ricneves-ai/flowgrammers-skills. Skill de auditoria de acessibilidade para escanear, corrigir e verificar a conformidade WCAG 2.2 Nível A e AA em codebases React, Next.js, Vue, Angular, Svelte e HTML puro. Use ao auditar acessibilidade, corrigir violações de a11y, verificar contraste de cores, gerar relatórios de conformidade ou integrar verificações de acessibilidade em pipelines CI/CD.
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design, covering Accessibility. It works with React, Angular, Next.js and Svelte. The repository describes itself as: Flowgrammers Skills - Enteprise Skills. The licence is MIT.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 1ae2d4a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
w3.orggithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
A11y Audit loads about 2.7k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 819 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ricneves-ai/flowgrammers-skills at commit 1ae2d4a, republished under its MIT licence (© ricneves-ai). 819 words, ~2,684 tokens.
.claude/skills/a11y-audit/SKILL.md (or your agent's skills folder).Skill de Auditoria e Remediação de Acessibilidade WCAG 2.2
A skill a11y-audit fornece um pipeline completo de auditoria de acessibilidade para aplicações web modernas. Implementa um fluxo de trabalho em três fases — Escanear, Corrigir, Verificar — que identifica violações WCAG 2.2 Nível A e AA, gera código de correção preciso por framework e produz relatórios de conformidade prontos para partes interessadas.
Para cada violação encontrada, fornece o código de correção preciso antes/depois, adaptado ao seu framework (React, Next.js, Vue, Angular, Svelte ou HTML puro).
O que esta skill faz:
| Funcionalidade | Descrição |
|---|---|
| Escaneamento WCAG 2.2 Completo | Verifica todos os critérios de sucesso Nível A e AA em seu codebase |
| Detecção de Framework | Detecta automaticamente React, Next.js, Vue, Angular, Svelte ou HTML puro |
| Classificação de Severidade | Categoriza cada violação como Crítica, Maior ou Menor |
| Geração de Código de Correção | Produz diffs de código antes/depois para cada problema |
| Verificador de Contraste de Cores | Valida pares de cores de primeiro e segundo plano contra as proporções AA e AAA |
| Relatórios de Conformidade | Gera relatórios para partes interessadas com resumos de aprovação/reprovação |
| Integração CI/CD | Configurações de pipeline para GitHub Actions, GitLab CI, Azure DevOps |
| Auditoria de Navegação por Teclado | Detecta gerenciamento de foco ausente e problemas de ordem de tabulação |
| Validação ARIA | Verifica atributos ARIA incorretos, redundantes ou ausentes |
| Severidade | Definição | Exemplo | SLA |
|---|---|---|---|
| Crítica | Bloqueia o acesso para grupos inteiros de usuários | Texto alternativo ausente, sem acesso por teclado à navegação | Corrigir antes do lançamento |
| Maior | Barreira significativa que degrada a experiência | Contraste de cores insuficiente, rótulos de formulário ausentes | Corrigir dentro do sprint atual |
| Menor | Problema de usabilidade que causa atrito | Funções ARIA redundantes, hierarquia de cabeçalhos subótima | Corrigir nos próximos 2 sprints |
# Escanear projeto inteiro
python scripts/a11y_scanner.py /path/to/project
# Escanear com saída JSON para ferramentas
python scripts/a11y_scanner.py /path/to/project --json
# Verificar contraste de cores para valores específicos
python scripts/contrast_checker.py --fg "#777777" --bg "#ffffff"
# Verificar contraste em um arquivo CSS/Tailwind
python scripts/contrast_checker.py --file /path/to/styles.css/a11y-audit # Auditar o projeto atual
/a11y-audit --scope src/ # Auditar diretório específico
/a11y-audit --fix # Auditar e aplicar correções automaticamente
/a11y-audit --report # Gerar relatório para partes interessadas
/a11y-audit --ci # Saída de resultados compatível com CIFase 1: Escanear — Percorrer a árvore de código-fonte, detectar framework, aplicar conjunto de regras.
python scripts/a11y_scanner.py /path/to/project --format tableFase 2: Corrigir — Aplicar correções específicas para o framework em cada violação.
Veja references/framework-a11y-patterns.md para o catálogo completo de padrões de correção.
Fase 3: Verificar — Executar novamente o scanner para confirmar as correções e verificar regressões.
python scripts/a11y_scanner.py /path/to/project --baseline audit-baseline.json// ANTES: src/components/ProductCard.tsx
function ProductCard({ product }) {
return (
<div onClick={() => navigate(`/product/${product.id}`)}>
<img src={product.image} />
<div style={{ color: '#aaa', fontSize: '12px' }}>{product.name}</div>
<span style={{ color: '#999' }}>${product.price}</span>
</div>
);
}| # | WCAG | Severidade | Problema |
|---|---|---|---|
| 1 | 1.1.1 | Crítica | <img> sem atributo alt |
| 2 | 2.1.1 | Crítica | <div onClick> não acessível por teclado |
| 3 | 1.4.3 | Maior | Cor #aaa no branco falha no contraste (2.32:1, necessita 4.5:1) |
| 4 | 1.4.3 | Maior | Cor #999 no branco falha no contraste (2.85:1, necessita 4.5:1) |
| 5 | 4.1.2 | Maior | Elemento interativo sem role e nome acessível |
// DEPOIS: src/components/ProductCard.tsx
function ProductCard({ product }) {
return (
<a href={`/product/${product.id}`} className="product-card"
aria-label={`View ${product.name} - $${product.price}`}>
<img src={product.image} alt={product.imageAlt || product.name} />
<div style={{ color: '#595959', fontSize: '12px' }}>{product.name}</div>
<span style={{ color: '#767676' }}>${product.price}</span>
</a>
);
}Veja references/examples-by-framework.md para exemplos em Vue, Angular, Next.js e Svelte.
Uso: python scripts/a11y_scanner.py <caminho> [opções]
Opções:
--json Saída dos resultados como JSON
--format {table,csv} Formato de saída (padrão: table)
--severity {critical,major,minor} Filtrar por severidade mínima
--framework {react,vue,angular,svelte,html,auto} Forçar framework (padrão: auto)
--baseline FILE Comparar com resultados de escaneamento anteriores
--report Gerar relatório para partes interessadas
--output FILE Escrever resultados em arquivo
--quiet Suprimir saída, apenas código de saída
--ci Modo CI: saída não-zero em problemas críticosUso: python scripts/contrast_checker.py [opções]
Opções:
--fg COLOR Cor de primeiro plano (hex)
--bg COLOR Cor de segundo plano (hex)
--file FILE Escanear arquivo CSS para pares de cores
--tailwind DIR Escanear diretório para classes de cores Tailwind
--json Saída dos resultados como JSON
--suggest Sugerir alternativas acessíveis para falhas
--level {aa,aaa} Nível de conformidade alvo (padrão: aa)| Armadilha | Abordagem Correta |
|---|---|
role="button" em um <div> | Use <button> nativo — inclui tratamento de teclado gratuitamente |
tabindex="0" em tudo | Apenas elementos interativos precisam de foco; use elementos nativos |
aria-label em elementos não-interativos | Use aria-labelledby apontando para texto visível |
display: none para ocultar de leitores de tela | Use a classe .sr-only |
| Cor apenas para transmitir significado | Adicione ícones, rótulos de texto ou padrões junto com a cor |
| Placeholder como único rótulo | Sempre forneça um <label> visível |
outline: none sem substituição | Sempre forneça um indicador de foco visível via focus-visible |
alt="" vazio em imagens informacionais | Imagens informacionais precisam de texto alternativo descritivo |
| Pular níveis de cabeçalho (h1 -> h3) | Níveis de cabeçalho devem ser sequenciais |
onClick sem onKeyDown | Adicione suporte a teclado ou prefira elementos nativos |
Ignorar prefers-reduced-motion | Envolva animações em @media (prefers-reduced-motion: no-preference) |
| Skill | Relação |
|---|---|
| senior-frontend | Padrões de frontend usados em correções de a11y |
| code-reviewer | Incluir verificações de a11y em fluxos de trabalho de revisão de código |
| senior-qa | Integração de testes de a11y em processos de QA |
| playwright-pro | Testes automatizados de navegador com asserções de acessibilidade |
| epic-design | Animações e scroll storytelling em conformidade com WCAG 2.1 AA |
| tdd-guide | Padrões de desenvolvimento orientado a testes para casos de teste de a11y |
| Referência | Descrição |
|---|---|
| wcag-quick-ref.md | Referência rápida dos critérios WCAG 2.2 Nível A e AA |
| wcag-22-new-criteria.md | Novos critérios de sucesso WCAG 2.2 (Aparência de Foco, Tamanho Meta, etc.) |
| aria-patterns.md | Padrões ARIA, interação por teclado e regiões ao vivo |
| framework-a11y-patterns.md | Padrões de correção específicos por framework (React, Vue, Angular, Svelte, HTML) |
| color-contrast-guide.md | Detalhes do verificador de contraste de cores, mapeamento de paleta Tailwind, classe sr-only |
| ci-cd-integration.md | Configurações de GitHub Actions, GitLab CI, Azure DevOps, pre-commit hook |
| audit-report-template.md | Modelo de relatório de auditoria pronto para partes interessadas |
| testing-checklist.md | Lista de verificação de testes manuais (teclado, leitor de tela, visual, formulários) |
| examples-by-framework.md | Exemplos completos de auditoria para Vue, Angular, Next.js e Svelte |
© ricneves-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in engineering-team/a11y-audit of ricneves-ai/flowgrammers-skills.
Open the folder on GitHubat commit 1ae2d4a
A11y Audit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| A11y Audit this skillricneves-ai/flowgrammers-skills | 115 | — | ~2.7k | Automated safety check: Pass | MIT | |
| A11y Auditalirezarezvani/claude-skills | 28k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Kb Framework AccessibilityCommunity-Access/accessibility-agents | 423 | — | ~1.8k | Automated safety check: Pass | MIT | |
| UI/UX Design System AdvisorGalaxy-Dawn/claude-scholar | 5.7k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Kb Web ScanningCommunity-Access/accessibility-agents | 423 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Markstream Installsickn33/agentic-awesome-skills | 47k | 1 repos | ~2k | Automated safety check: Pass | MIT |
alirezarezvani/claude-skills
Accessibility audit skill for scanning, fixing, and verifying WCAG 2.2 Level A and AA compliance across React, Next.js, Vue, Angular, Svelte, and plain HTML codebases.
Community-Access/accessibility-agents
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
Galaxy-Dawn/claude-scholar
Turns a vague UI request into a concrete design system with style, palette, typography and layout guidance from a search script, plus stack-specific implementation advice.
Community-Access/accessibility-agents
Reference data, not a reviewer. An agent skill from Community-Access/accessibility-agents.
sickn33/agentic-awesome-skills
Install and configure Markstream streaming Markdown renderers for Vue, React, Svelte, Angular, Nuxt, Next.js, and Vue 2 applications.
nirholas/three.ws
Add the Shaders WebGPU mouse effect used for the Tidal Commons hero: a white twinkling halftone cursor trail driven by ChromaFlow, masked through a DotGrid, finished with chromatic ripples and film…
ricneves-ai/flowgrammers-skills
Gerador de PRD (Product Requirements Document) em portugues-BR a partir de um Product Brief.
ricneves-ai/flowgrammers-skills
Especialista em SDD (Software Design Document) — transforma um PRD completo numa estrutura de specs quebrada por pasta no formato .specs/NNN-nome/, com contextos isolados por feature, arquivo…
ricneves-ai/flowgrammers-skills
Skills para desenvolvimento de software, debug, APIs, automações no-code e uso avançado de ferramentas de IA para desenvolvimento.
ricneves-ai/flowgrammers-skills
Skills para criação de conteúdo escrito, copy persuasivo, headlines, emails e artigos em português BR.
ricneves-ai/flowgrammers-skills
Skills para funis de vendas, propostas comerciais, tratamento de objeções e publicidade digital com contexto do mercado brasileiro.
ricneves-ai/flowgrammers-skills
Skills de produtividade pessoal com metodologias GTD, time blocking, gestão de energia e organização de projetos pessoais.
Categories
Skill de auditoria de acessibilidade para escanear, corrigir e verificar a conformidade WCAG 2.2 Nível A e AA em codebases React, Next.js, Vue, Angular, Svelte e HTML puro. A11y Audit is an agent skill from ricneves-ai/flowgrammers-skills.js, Vue, Angular, Svelte e HTML puro.
A11y Audit fits situations like: tasks that involve Accessibility.
Run `npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a claude-code`. Or copy the skill folder (engineering-team/a11y-audit in ricneves-ai/flowgrammers-skills) into .claude/skills/a11y-audit in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a codex`. Or copy the skill folder (engineering-team/a11y-audit in ricneves-ai/flowgrammers-skills) into .agents/skills/a11y-audit in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ricneves-ai/flowgrammers-skills --skill a11y-audit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/a11y-audit, .gemini/skills/a11y-audit, .github/skills/a11y-audit and .opencode/skills/a11y-audit in your project.
Going by SKILL.md and its folder, A11y Audit needs the command-line tools its instructions call (python). Our summary lists: Python 3.
SKILL.md names 2 domains. As links in the text: w3.org and github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
A11y Audit is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.7k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with A11y Audit: A11y Audit (alirezarezvani/claude-skills, 28k stars), Kb Framework Accessibility (Community-Access/accessibility-agents, 423 stars), UI/UX Design System Advisor (Galaxy-Dawn/claude-scholar, 5.7k stars) and Kb Web Scanning (Community-Access/accessibility-agents, 423 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ricneves-ai (a GitHub user) maintains it in ricneves-ai/flowgrammers-skills, which has 115 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on September 25, 2026.
Source: ricneves-ai/flowgrammers-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.