Skip to content

Commit 68a9a2e

Browse files
Merge branch 'main' into swc-1668/poc-components
2 parents 0302314 + 608aa71 commit 68a9a2e

3 files changed

Lines changed: 326 additions & 37 deletions

File tree

.ai/skills/accessibility-migration-analysis/SKILL.md

Lines changed: 67 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ alwaysApply: false
77

88
# Component migration: analyze accessibility
99

10-
Create comprehensive accessibility documentation for the **analyze accessibility** step of 2nd-gen component migration. One markdown file per component, following a fixed structure (ARIA context, recommendations, testing, checklist, references).
10+
Create comprehensive accessibility documentation for the **analyze accessibility** step of 2nd-gen component migration.
11+
One markdown file per component, following a fixed structure (ARIA context, recommendations, testing, checklist,
12+
references). Use this when **creating or updating** `accessibility-migration-analysis.md` under `CONTRIBUTOR-DOCS/03_project-planning/03_components/<component>/`.
1113

1214
## Mindset
1315

@@ -42,10 +44,17 @@ Use these existing docs when matching structure, headings, tables, and phrasing:
4244
- `CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md`
4345
- `CONTRIBUTOR-DOCS/03_project-planning/03_components/status-light/accessibility-migration-analysis.md`
4446

47+
## File location and discovery
48+
49+
- **Path:** `CONTRIBUTOR-DOCS/03_project-planning/03_components/<component-name>/accessibility-migration-analysis.md`
50+
- **Pairing:** Link to `./rendering-and-styling-migration-analysis.md` from **Overview → Also read**.
51+
- **Nav:** After adding a file or changing `##` / `###` headings, run `node update-nav.js` from `CONTRIBUTOR-DOCS/01_contributor-guides/07_authoring-contributor-docs` (see **contributor-doc-update** rule). Register the doc in `03_components/README.md` when introducing a new component folder.
52+
4553
### Important
4654

4755
- Verify behavior and ARIA in **2nd-gen source** before stating what the component exposes — do not document ARIA the code does not set
4856
- Ask clarifying questions for uncertain mappings instead of guessing
57+
- When the doc covers **progress**, **loading**, **busy**, or **spinner** UX, align guidance with Adobe’s Figma file **Loading animation discovery** ([Loading animation discovery](https://www.figma.com/design/42VzvpW262EAUbYsadO4e8/Loading-animation-discovery)); if you cite or rely on it in the doc body, **also** list that link under **`## References`**
4958

5059
## Full instructions
5160

@@ -55,105 +64,126 @@ Use this **H2** order. **Do not** skip sections that apply; omit only what truly
5564

5665
1. `## Overview`
5766
2. `## ARIA and WCAG context`
58-
3. `## Recommendations: \`<swc-component-name>\``
59-
4. `## Testing` with `### Automated tests`
60-
5. `## Summary checklist`
61-
6. `## References`
67+
3. `## Related 1st-gen accessibility (Jira)`
68+
4. `## Recommendations: \`<swc-component-name>\``
69+
5. `## Testing` with `### Automated tests`
70+
6. `## Summary checklist`
71+
7. `## References`
6272

6373
Under **`## Recommendations`**, use these **`###` subsections** in order:
6474

6575
1. `### ARIA roles, states, and properties`
6676
2. `### Shadow DOM and cross-root ARIA Issues`
6777
3. `### Accessibility tree expectations`
68-
4. **Optional (when product guidance needs it):** e.g. `### Assistive technology, live regions`place **after** accessibility tree expectations and **before** keyboard and focus. For **motion** (WCAG 2.2.2, reduced motion, Spectrum tokens), add rows to **Guidelines that apply** and the **Recommendations** table instead of a separate `### Motion` sectionsee `progress-circle/accessibility-migration-analysis.md`.
78+
4. **Optional (when product guidance needs it):** e.g. `### Assistive technology, live regions`place **after** accessibility tree expectations and **before** keyboard and focus. For **motion** (WCAG 2.2.2, reduced motion, Spectrum tokens), add rows to **Guidelines that apply** and the **Recommendations** table instead of a separate `### Motion` sectionsee **`progress-circle/accessibility-migration-analysis.md`**. For **loading / progress** design intent (variants, motion), align with Figma **Loading animation discovery** ([Loading animation discovery](https://www.figma.com/design/42VzvpW262EAUbYsadO4e8/Loading-animation-discovery)) and **list it under `## References`** whenever the contributor doc cites it.
6979
5. `### Keyboard and focus`
7080

71-
Separate major sections with a horizontal rule (`---`) where existing docs use it (after Overview, after ARIA and WCAG context, after Recommendations block before Testing).
81+
Separate major sections with a horizontal rule (`---`) where existing docs use it (after Overview, after ARIA and WCAG context, after Related 1st-gen accessibility (Jira) before Recommendations, after Recommendations block before Testing).
7282

7383
### Overview
7484

7585
- Start with a short paragraph: what the doc covers, **`swc-*` name**, and **WCAG 2.2 Level AA** as the target.
76-
- Use **`###` subheadings** for structured bits**do not** use bold-only labels like `**Also read:**` as section titles.
86+
- Use **`###` subheadings** for structured bits**do not** use bold-only labels like `**Also read:**` as section titles.
7787

7888
**Typical subheadings** (include what fits the component):
7989

80-
| Subheading | Use when |
81-
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
82-
| `### Also read` | Alwayspoint at the component's `rendering-and-styling-migration-analysis.md` (and optional related a11y docs). |
83-
| `### What it is` or `### What a <noun> is` | Alwaysone clear definition. |
84-
| `### When to use something else` | When authors often confuse this with another componentlink to other migration or a11y docs with relative paths. |
85-
| `### What it is not` | When a common mistaken identity exists (e.g. progress ring vs in-field spinner). |
86-
| `### Related` | Optionalrelated components (e.g. progress bar vs progress circle). |
90+
| Subheading | Use when |
91+
| ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- |
92+
| `### Also read` | Alwayspoint at the components `rendering-and-styling-migration-analysis.md` (and optional related a11y docs). |
93+
| `### What it is` or `### What a <noun> is` | Alwaysone clear definition. |
94+
| `### When to use something else` | When authors often confuse this with another componentlink to other migration or a11y docs with relative paths. |
95+
| `### What it is not` | When a common mistaken identity exists (e.g. progress ring vs in-field spinner). |
96+
| `### Related` | Optionalrelated components (e.g. progress bar vs progress circle). |
8797

88-
### ARIA and WCAG context
98+
Body text under each `###` is normal paragraphs and/or bullets.
99+
100+
## ARIA and WCAG context
89101

90102
- `### Pattern in the APG` — bullets: how APG (or lack of a named pattern) relates to this widget; link to APG patterns when relevant.
91103
- `### Guidelines that apply` — a **table** with columns **`Idea`** and **`Plain meaning`** (WCAG / WAI-ARIA links in the first column as needed).
92-
- Use the heading **`### Guidelines that apply`** (not "Guidelines that still apply") for consistency across components.
104+
- Use the heading **`### Guidelines that apply`** (not Guidelines that still apply) for consistency across components.
93105
- Optional closing paragraph: `**Bottom line:** …` before `---`.
94106

95-
### Recommendations: ARIA roles, states, and properties
107+
## Related 1st-gen accessibility (Jira)
108+
109+
- **Placement:** Third **H2**, immediately **after** `## ARIA and WCAG context` and **before** `## Recommendations`, separated with `---` like other major sections.
110+
- **Content:** Put the **markdown table** immediately under the **H2** (no intro paragraph). **Adobe Jira** is authoritative for **open** vs **closed** status and for **resolution**—refresh table cells when you triage; this table is only a snapshot. Use link targets such as `https://jira.corp.adobe.com/browse/SWC-####`.
111+
- **After the table:** Do **not** add follow-up paragraphs that list excluded issues or explain cross-component scope (for example paragraphs starting with **Omitted from this table (by doc rules)** or **Scope note**). Apply **Exclude** by **omitting rows**; put any needed nuance in an optional **Notes** column or in the **Summary** cell.
112+
- **Columns (recommended):** **Jira** | **Type** (Story, Bug, Epic, …) | **Status (snapshot)** | **Resolution (snapshot)** (e.g. Unresolved, Done, Fixed—omit or use “—” when not applicable) | **Summary**. Optional **Notes** when helpful (PR references, file paths, `@todo` locations, “applies to related `sp-*` …”).
113+
- **Scope:** Include rows your team tracks for this component’s **1st-gen** (`sp-*`) accessibility work; **add rows** when you file or discover issues, and **trim or update** when Jira state or scope changes. Do **not** maintain a separate contributor-doc index file for the same list.
114+
- **Exclude (always apply when curating the table):**
115+
- **Labels:** Do **not** list issues that carry Jira labels **`gen2`** or **`gen-2`** (match your project’s spelling and casing). This section tracks **1st-gen** (`sp-*`) accessibility work, not 2nd-gen program-only tickets.
116+
- **Audit:** Do **not** list **audit** issues whose **summary begins with** **Audit and improve** (usually **Epics** for cross-cutting accessibility audits—e.g. primitive components, card and meter). Track those in Jira or program views, not in per-component tables.
117+
- **Migration consultation:** Do **not** list **stories** whose summary follows **Migration (YYYY-MM-DD): Accessibility consultation for 2nd-gen migration** (program-level 2nd-gen consultation; track in migration/program views, not per-component tables).
118+
- **Reference:** See **`badge/accessibility-migration-analysis.md`** (and sibling component docs) for a full example table. **Avatar** currently documents the Jira block in **`avatar/rendering-and-styling-migration-analysis.md`** alongside other accessibility migration content—prefer splitting to **`avatar/accessibility-migration-analysis.md`** when that file is added.
119+
120+
## Recommendations: ARIA roles, states, and properties
96121

97122
Use a **table** (`Topic | What to do`).
98123

99124
**Single semantic role policy** (always address):
100125

101-
- **Prescribed host role** (e.g. `separator`, `progressbar`): State that the role is **prescribed** and **fixed**, **must not** be author-overridable in implementation or docs, and that **`swc-*` maps to one semantic role only**. If another role is needed, authors must use **different markup or a different component** — not a role override on this element.
102-
- **No default host role** (e.g. badge, status light): State that the component should still represent **one** clear semantic thing; **do not** set a conflicting host `role` (e.g. `button`, `progressbar`) to fake another widget — use the appropriate **button / link / tag / other** component instead.
126+
- **Prescribed host role** (e.g. `separator`, `progressbar`): State that the role is **prescribed** and **fixed**, **must not** be author-overridable in implementation or docs, and that **`swc-*` maps to one semantic role only**. If another role is needed, authors must use **different markup or a different component**—not a role override on this element.
127+
- **No default host role** (e.g. badge, status light): State that the component should still represent **one** clear semantic thing; **do not** set a conflicting host `role` (e.g. `button`, `progressbar`) to fake another widget—use the appropriate **button / link / tag / other** component instead.
128+
- **Never** recommend **`aria-live="assertive"`** for loading or routine progress.
129+
- Treat **`aria-live="polite"`** as **rare**: polite regions still **queue** speech, and **several** components or regions updating together becomes **noisy** (bursts, backlog). Prefer **native role semantics** (e.g. **`progressbar`**) and **one** primary message for related loaders when possible.
103130

104131
Then add rows for **name**, **states**, **properties**, **visual-only props**, **docs expectations**, etc., **verified against the real implementation**.
105132

106133
### Shadow DOM and cross-root ARIA Issues
107134

108135
- **Heading text must be exactly:** `### Shadow DOM and cross-root ARIA Issues` (word **Issues** capitalized).
109-
- **If** the component has **no** cross-root ARIA concerns (no reliance on **ID references** that must resolve across shadow boundaries, e.g. `aria-labelledby` / `aria-describedby` pointing at shadow-only IDs) **and** it is **not** a **form-associated** control, the **entire body** of the subsection should be a single word: **`None`** (no extra sentences).
136+
- **If** the component has **no** cross-root ARIA concerns (no reliance on **ID references** that must resolve across shadow boundaries, e.g. `aria-labelledby` / `aria-describedby` pointing at shadow-only IDs) **and** it is **not** a **form-associated** control (or otherwise dependent on cross-root labeling in ways that need a written plan), the **entire body** of the subsection should be a single word: **`None`** (no extra sentences).
110137
- **Otherwise** describe the concrete issues and expectations (e.g. `ElementInternals`, `aria-*` delegation, proposed ID strategies).
111138

112-
### Live regions and announcements
139+
## Accessibility tree expectations
140+
141+
- Use short subsections or bold lead-ins for variants (e.g. with text, icon-only, determinate vs indeterminate).
142+
- Describe what assistive technologies should **see**—aligned with implementation.
143+
144+
## Live regions and announcements (progress, loading, status)
113145

114146
When the component or its docs touch **live regions** or **frequent** status updates:
115147

116148
- Call out **over-announcing** as a risk: docs should **warn** authors not to flood screen reader users.
117-
- **Never** recommend **`aria-live="assertive"`** for loading or routine progress.
149+
- **Never** recommend **`aria-live="assertive"`** for loading or routine progress (interrupts and overwhelms).
118150
- Treat **`aria-live="polite"`** as **rare**: polite regions still **queue** speech, and **several** components or regions updating together becomes **noisy** (bursts, backlog). Prefer **native role semantics** (e.g. **`progressbar`**) and **one** primary message for related loaders when possible.
119151

120-
See `progress-circle/accessibility-migration-analysis.md` for a full example.
152+
For **progress**, **loading**, **busy**, or **spinner** UX (including motion, variants, and when which treatment applies), **consult** Adobe’s Figma file **Loading animation discovery**: [Loading animation discovery](https://www.figma.com/design/42VzvpW262EAUbYsadO4e8/Loading-animation-discovery). Align written guidance with that source where the doc covers those states; **add the same link under `## References`** in the contributor doc whenever you cite or rely on it.
153+
154+
See **`CONTRIBUTOR-DOCS/03_project-planning/03_components/progress-circle/accessibility-migration-analysis.md`** for a full example.
121155

122156
### Keyboard and focus
123157

124-
- **If the component is not focusable** in its default, supported use: the subsection must contain **only** this sentence:
158+
- **If the component is not focusable** in its default, supported use (no Tab stop, not a keyboard widget): the subsection must contain **only** this sentence (no extra bullets or tables):
125159

126160
`**Not focusable.** Keyboard navigation should skip this component and move to the next focusable element.`
127161

128162
- **If the component is focusable or has a keyboard pattern:** replace with accurate, component-specific guidance (Tab order, keys, roving tabindex, focus trap, etc.).
129163

130-
### Accessibility tree expectations
131-
132-
- Use short subsections or bold lead-ins for variants (e.g. with text, icon-only, determinate vs indeterminate).
133-
- Describe what assistive technologies should **see** — aligned with implementation.
134-
135-
### Testing
164+
## Testing
136165

137166
### Automated tests
138167

139-
- Table: **Kind of test** | **What to check** (unit, aXe/Storybook, Playwright ARIA snapshots, contrast, etc.match what the repo actually uses for that component).
168+
- Table: **Kind of test** | **What to check** (unit, aXe/Storybook, Playwright ARIA snapshots, contrast, etc.match what the repo actually uses for that component).
140169

141170
### Summary checklist
142171

143172
- Markdown task list (`- [ ]`) of concrete, verifiable items (stories, docs, tree, focus, tooling).
144173

145174
### References
146175

147-
- Include **WAI-ARIA**, **WCAG 2.2**, **APG "Read me first"** (or equivalent), and the component **rendering-and-styling migration** link at minimum. Add APG pattern links when used in the doc.
176+
- Include **WAI-ARIA**, **WCAG 2.2**, **APG “Read me first”** (or equivalent), and the component **rendering-and-styling migration** link at minimum. Add APG pattern links when used in the doc.
177+
- When the doc discusses **progress**, **loading**, **busy**, or **spinner** behavior and you point authors at the **Loading animation discovery** Figma file in the body, list it again here: [Loading animation discovery](https://www.figma.com/design/42VzvpW262EAUbYsadO4e8/Loading-animation-discovery).
148178

149179
### Writing style
150180

151-
- Follow **text-formatting** rules: sentence case for headings (proper nouns such as **ARIA**, **WCAG**, **APG** stay as usual).
152-
- Prefer plain, scannable wording; avoid duplicating the rendering doc**link** to it instead.
181+
- Follow **text-formatting** workspace rules: sentence case for headings (proper nouns such as **ARIA**, **WCAG**, **APG** stay as usual).
182+
- Prefer plain, scannable wording; avoid duplicating the rendering doc**link** to it instead.
153183
- **Verify** behavior and ARIA in **2nd-gen source** before stating what the component exposes.
154184

155185
## Related rules and skills
156186

157-
- **contributor-doc-update.md** — when to run `update-nav.js` after heading or structure changes.
187+
- **contributor-doc-update.mdc** — when to run `update-nav.js` after heading or structure changes.
158188
- **component-migration-analysis** skill — for `rendering-and-styling-migration-analysis.md`, not this file.
159-
- **stories-documentation.md** / **stories-format.md** — Storybook docs, separate from this contributor planning doc.
189+
- **stories-documentation.mdc** / **stories-format.mdc** — Storybook docs, separate from this contributor planning doc.

CONTRIBUTOR-DOCS/03_project-planning/03_components/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
- [Badge accessibility migration analysis](badge/accessibility-migration-analysis.md)
3333
- [Badge migration roadmap](badge/rendering-and-styling-migration-analysis.md)
3434
- Button
35+
- [Button accessibility migration analysis](button/accessibility-migration-analysis.md)
3536
- [Button migration roadmap](button/rendering-and-styling-migration-analysis.md)
3637
- Button Group
3738
- [Button Group migration roadmap](button-group/rendering-and-styling-migration-analysis.md)

0 commit comments

Comments
 (0)