|
1 | | -# continuous-ai-for-accessibility-scanner |
| 1 | +# AI-powered Accessibility Scanner |
2 | 2 |
|
3 | | -This repo contains code for a GitHub Actions action named `github-community-projects/continuous-ai-for-accessibility-scanner` (“scanner”, for short). The scanner finds potential accessibility gaps for a provided list of URLs, files GitHub issues to track them, and attempts to fix them with Copilot. |
| 3 | +The AI-powered Accessibility Scanner (a11y scanner) is a GitHub Action that detects accessibility barriers across your digital products, creates trackable issues, and leverages Copilot for AI-powered fixes. |
4 | 4 |
|
5 | | -For an introduction to GitHub Actions, check out [“Understanding GitHub Actions” (GitHub Docs)](https://docs.github.com/en/actions/get-started/understand-github-actions). |
| 5 | +The a11y scanner helps teams: |
6 | 6 |
|
7 | | -## Getting started |
| 7 | +- 🔍 Scan websites, files, repositories, and dynamic content for accessibility issues |
| 8 | +- 📝 Create actionable GitHub issues that can be assigned to Copilot |
| 9 | +- 🤖 Propose fixes with Copilot, with humans reviewing before merging |
8 | 10 |
|
9 | | -### Adding a workflow file |
| 11 | +> ⚠️ The a11y scanner is currently in beta. It can help identify accessibility gaps but cannot guarantee fully accessible code suggestions. Always review before merging. |
10 | 12 |
|
11 | | -To use the scanner, create a GitHub Actions workflow (for example, a file named `scan.yml`) in the `.github/workflows` directory of one of your repositories, commit it, and push the commit. |
| 13 | +--- |
12 | 14 |
|
13 | | -For general workflow authoring tips, check out [“Writing workflows” (GitHub Docs)](https://docs.github.com/en/actions/how-tos/write-workflows); specifics are below. |
| 15 | +## Getting Started |
14 | 16 |
|
15 | | -The contents of the workflow file should look similar to the example below: |
| 17 | +### 1. Add a Workflow File |
| 18 | + |
| 19 | +Create a workflow file in `.github/workflows/` (e.g., `a11y-scan.yml`) in your repository: |
16 | 20 |
|
17 | 21 | ```YAML |
18 | 22 | name: Continuous Accessibility Scanner |
@@ -40,49 +44,76 @@ jobs: |
40 | 44 | token: ${{ secrets.GH_TOKEN }} # This token must have write access to the repo above (contents, issues, and PRs); more information below. Note: GitHub Actions’ `GITHUB_TOKEN` (https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) cannot be used here. |
41 | 45 | ``` |
42 | 46 |
|
43 | | -All instances of `REPLACE_THIS` must be replaced before the workflow will run. For more information, check out the [`urls` input’s documentation](#urls) and the [`repository` input’s documentation](#repository). |
| 47 | +> Update all `REPLACE_THIS` placeholders with your actual values. See [Action Inputs](#action-inputs) for more details. |
44 | 48 |
|
45 | | -### Creating tokens and adding secrets |
| 49 | +Required Permissions: |
| 50 | +- Write access to add or update workflows |
| 51 | +- Admin access to add repository secrets |
46 | 52 |
|
47 | | -Create two tokens, then add them as repository secrets named `GH_COMMUNITY_PROJECTS_TOKEN` and `GH_TOKEN`, respectively. |
| 53 | +📚 [Understanding GitHub Actions](https://docs.github.com/en/actions/get-started/understand-github-actions) | [Managing GitHub Actions settings](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-github-actions-settings-for-a-repository) | [Writing workflows](https://docs.github.com/en/actions/how-tos/write-workflows) |
48 | 54 |
|
49 | | -- `GH_COMMUNITY_PROJECTS_TOKEN` should be a fine-grained personal access token (PAT) with the `contents: read` and `metadata: read` permission for the `github-community-projects/continuous-ai-for-accessibility-scanner` repository. |
| 55 | +--- |
50 | 56 |
|
51 | | -- `GH_TOKEN` should be a fine-grained PAT with `contents: write`, `issues: write`, `pull-requests: write`, and `metadata: read` for the repository referenced in your workflow (the `repository` input). |
| 57 | +### 2. Create Tokens and Add Secrets |
52 | 58 |
|
53 | | -Check out [“Creating a fine-grained personal access token” (GitHub Docs)](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) and [“Creating secrets for a repository” (GitHub Docs)](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository) for step-by-step guidance. |
| 59 | +The a11y scanner requires two Personal Access Tokens (PATs) as repository secrets: |
54 | 60 |
|
55 | | -### Scanning your website |
| 61 | +#### The `GH_COMMUNITY_PROJECTS_TOKEN` is a fine-grained PAT with: |
| 62 | +- `contents: read` |
| 63 | +- `metadata: read` |
| 64 | +- Scope: [`github-community-projects/continuous-ai-for-accessibility-scanner`](https://github.com/github-community-projects/continuous-ai-for-accessibility-scanner) |
56 | 65 |
|
57 | | -Run your newly-added workflow, by following the instructions in [“Running a workflow” (GitHub Docs)](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manually-run-a-workflow#running-a-workflow). |
| 66 | +#### The `GH_TOKEN` is a fine-grained PAT with: |
| 67 | +- `contents: write` |
| 68 | +- `issues: write` |
| 69 | +- `pull-requests: write` |
| 70 | +- `metadata: read` |
| 71 | +- Scope: Your target repository (where issues and PRs will be created) |
58 | 72 |
|
59 | | -## Configuring the action |
| 73 | +> GitHub Actions' default `GITHUB_TOKEN` cannot be used here. |
60 | 74 |
|
61 | | -### Inputs |
| 75 | +📚 [Creating a fine-grained PAT](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#creating-a-fine-grained-personal-access-token) | [Creating repository secrets](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets#creating-secrets-for-a-repository) |
62 | 76 |
|
63 | | -#### `urls` |
| 77 | +--- |
64 | 78 |
|
65 | | -**Required** Newline-delimited list of URLs to check for accessibility issues. For example: |
| 79 | +### 3. Run Your First Scan |
66 | 80 |
|
67 | | -```txt |
68 | | -https://primer.style |
69 | | -https://primer.style/octicons/ |
70 | | -``` |
| 81 | +Trigger the workflow, either manually or automatically based on your configuration. The a11y scanner will: |
71 | 82 |
|
72 | | -#### `repository` |
| 83 | +- 🔎 Analyze your target URLs, files, or repos |
| 84 | +- 📝 File issues for accessibility findings |
| 85 | +- 🤖 Optionally assign issues to Copilot to create PRs with proposed fixes |
73 | 86 |
|
74 | | -**Required** Repository (with owner) to file issues in. For example: `primer/primer-docs`. |
| 87 | +📚 [Running a workflow manually](https://docs.github.com/en/actions/how-tos/manage-workflow-runs/manually-run-a-workflow#running-a-workflow) |
75 | 88 |
|
76 | | -#### `token` |
| 89 | +--- |
77 | 90 |
|
78 | | -**Required** Personal access token (PAT) with fine-grained permissions `contents: write`, `issues: write`, `pull-requests: write`, and `metadata: read`. |
| 91 | +## Action Inputs |
79 | 92 |
|
80 | | -#### `cache_key` |
| 93 | +| Input | Required | Description | Example | |
| 94 | +|-------|----------|-------------|---------| |
| 95 | +| `urls` | Yes | Newline-delimited list of URLs to scan | `https://primer.style`<br>`https://primer.style/octicons` | |
| 96 | +| `repository` | Yes | Repository (with owner) for issues and PRs | `primer/primer-docs` | |
| 97 | +| `token` | Yes | PAT with write permissions (see above) | `${{ secrets.GH_TOKEN }}` | |
| 98 | +| `cache_key` | No | Custom key for caching findings across runs<br>Allowed: `A-Za-z0-9._/-` | `cached_findings-main-primer.style.json` | |
81 | 99 |
|
82 | | -**Optional** Custom key for caching findings across runs. Allowed characters are `A-Za-z0-9._/-`. For example: `cached_findings-main-primer.style.json`. |
| 100 | +--- |
83 | 101 |
|
84 | 102 | ## Configuring Copilot |
85 | 103 |
|
86 | | -The scanner leverages Copilot coding agent, which can be configured by providing custom instructions. Check out [“Adding repository custom instructions for GitHub Copilot”](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions) to learn how to get started with custom instructions. |
| 104 | +The a11y scanner leverages Copilot coding agent, which can be configured with custom instructions: |
| 105 | + |
| 106 | +- Repository-wide: `.github/copilot-instructions.md` |
| 107 | +- Directory/file-scoped: `.github/instructions/*.instructions.md` |
| 108 | + |
| 109 | +📚 [Adding repository custom instructions](https://docs.github.com/en/copilot/how-tos/configure-custom-instructions/add-repository-instructions) | [Copilot .instructions.md support](https://github.blog/changelog/2025-07-23-github-copilot-coding-agent-now-supports-instructions-md-custom-instructions/) |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +## Feedback |
| 114 | + |
| 115 | +Beta participants have direct contact for questions and suggestions. A public feedback form will be available once the project is open-sourced. |
| 116 | + |
| 117 | +--- |
87 | 118 |
|
88 | | -As announced in [“GitHub Copilot coding agent now supports .instructions.md custom instructions” (GitHub Blog)](https://github.blog/changelog/2025-07-23-github-copilot-coding-agent-now-supports-instructions-md-custom-instructions/), Copilot coding agent—and, by extension, this scanner action—supports custom instructions provided in `.github/copilot-instructions.md` _and_ `.instructions.md` files stored under `.github/instructions` (which can be scoped to specific files or directories). |
| 119 | +*Last updated: 2025-08-28* |
0 commit comments