# AI based Accessibility Review Action A Gitea/GitHub Action that reviews modified files against a markdown rules document using OpenAI, and outputs the review as markdown for posting as a PR comment. The action extracts files changed in a pull request, filters them by a glob pattern, sends them along with an accessibility rules file to OpenAI for analysis, and returns the review result as an output. ## Usage ```yaml name: Accessibility review on: pull_request: paths: - 'src/**/*.tsx' jobs: review: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - id: ai-review uses: https://gitea.dsv.su.se/stne3960/ai-review-action@v1 with: openai-api-key: ${{ secrets.OPENAI_API_KEY }} rules-file: AI_REVIEW.md file-pattern: 'src/**/*.tsx' - name: Post review comment uses: actions/github-script@v7 if: steps.ai-review.outputs.review != '' env: REVIEW: ${{ steps.ai-review.outputs.review }} with: script: | const review = process.env.REVIEW; await github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, body: `## Accessibility Review\n\n${review}` }) ``` ## Inputs | Input | Required | Default | Description | |-------|----------|---------|-------------| | `openai-api-key` | Yes | - | OpenAI API key | | `rules-file` | Yes | - | Path to the accessibility rules markdown file | | `file-pattern` | No | `**/*.tsx` | Glob pattern for filtering changed files | | `model` | No | `gpt-4o` | OpenAI model to use | ## Outputs | Output | Description | |--------|-------------| | `review` | The accessibility review result in markdown. Empty string if no matching files were changed. | ## Rules File The action expects a markdown file with structured requirements. Each requirement needs an ID, WCAG reference, severity, and a check description. ### Format ```markdown # Accessibility Review Rules ## Output Format For each requirement violation found, report using this exact structure: VIOLATION: FILE: LINE: SEVERITY: Critical | Major | Minor WCAG: DESCRIPTION: FIX: ## Requirements REQ-IMG-001: All `` elements must have an `alt` attribute. - WCAG: 1.1.1 - Severity: Critical - Check: Every `` has `alt`. No missing `alt` attributes. REQ-KBD-001: All interactive elements must be operable with keyboard alone. - WCAG: 2.1.1 - Severity: Critical - Check: Interactive elements use `