Skip to content

feat(skill): add modern-web-a11y-interactive community skill (#868 Phase 1 complete)#884

Merged
s977043 merged 1 commit into
mainfrom
feat/868-modern-web-a11y-interactive-skill
May 23, 2026
Merged

feat(skill): add modern-web-a11y-interactive community skill (#868 Phase 1 complete)#884
s977043 merged 1 commit into
mainfrom
feat/868-modern-web-a11y-interactive-skill

Conversation

@s977043

@s977043 s977043 commented May 23, 2026

Copy link
Copy Markdown
Owner

Summary

Fourth and final community skill for #868 Modern Web Guidance Phase 1, completing the four-axis coverage. The new skill focuses on interactive-UI accessibility (keyboard / focus / live region / role / focus-visibility), explicitly delegating accessible-name to the pre-existing rr-midstream-a11y-accessible-name-001.

Phase 1 axis status after this PR

Axis Skill PR
semantic / Platform-Native / modern CSS rr-midstream-modern-web-semantic-001 #873
performance / Core Web Vitals rr-midstream-modern-web-performance-001 #875
browser compatibility / Baseline rr-midstream-modern-web-browser-compat-001 #881
accessibility (interactive UI) rr-midstream-modern-web-a11y-interactive-001 this PR
accessibility (static labels) rr-midstream-a11y-accessible-name-001 (pre-existing)

Skill scope (all Suggestions, severity: minor)

Category Patterns surfaced
Keyboard operability click-only generic elements, hover-only state, shortcut conflicts, menu / tabs roving tabindex
Focus management modal focus entry / return, focus trap → <dialog> / inert, positive tabIndex anti-pattern
Live regions aria-live polite vs assertive, toast / snackbar announcements, large DOM rewrites
Role / state semantics aria-expanded, aria-pressed, listbox / combobox role consistency, aria-hidden / pointer-events
Focus visibility outline: none additions, :focus-visible adoption, focus ring regressions

Guardrails

  • severity: minor, suggestion-tone — never enforces.
  • Library / design system components with built-in a11y short-circuit suggestions.
  • Existing aria-* / tabIndex on the diffed element short-circuit specific suggestions.
  • CSS-only style adjustments without interaction change are out of scope.
  • accessible-name coverage explicitly delegated to rr-midstream-a11y-accessible-name-001 — no double finding.

Changes

File What
skills/midstream/community/rr-midstream-modern-web-a11y-interactive-001/SKILL.md New skill (single file, community tier)
tests/fixtures/execution-plan-midstream.json Snapshot regenerated to include the new skill

Test plan

  • npm run skills:validate (new SKILL.md passes)
  • npm test (1087/1087 green)
  • markdownlint + prettier + dashes green
  • CI green

Refs: #868. Follows #873 / #875 / #881. Closes Phase 1 four-axis coverage.

🤖 Generated with Claude Code

…ase 1)

Fourth and final community skill for #868 Phase 1, covering the
interactive-UI accessibility axis the existing trio left as guard /
handoff conditions. The new skill complements
rr-midstream-a11y-accessible-name-001 by focusing on dynamic /
interactive behaviour rather than static name / alt attributes.

Scope (all Suggestions, severity: minor)
- Keyboard operability: click-only generic elements, hover-only state
  toggles, shortcut key conflicts, menu / tabs roving tabindex.
- Focus management: modal / dialog / drawer focus entry and return,
  focus trap (recommend native <dialog> / inert), positive tabIndex
  anti-pattern.
- Live regions and dynamic content: aria-live polite vs assertive,
  toast / snackbar / inline validation announcements, large DOM
  rewrites.
- Role and state semantics: aria-expanded for disclosure, aria-pressed
  for toggle buttons, role / aria-selected / aria-checked consistency
  for selection lists, aria-hidden / pointer-events for decorative
  elements.
- Focus visibility: outline: none additions, :focus-visible adoption,
  design token focus ring regressions.

Guardrails (False-positive guards)
- Library / design system components with built-in a11y are
  short-circuited.
- Existing aria-* / tabIndex on the diffed element short-circuit the
  specific suggestion.
- CSS-only style adjustments without interaction change are out of
  scope.
- Existing :focus-visible / outline control short-circuits focus
  visibility comments.
- accessible-name coverage explicitly delegated to
  rr-midstream-a11y-accessible-name-001 (no double finding).

Tests
- npm run skills:validate passes the new SKILL.md.
- tests/fixtures/execution-plan-midstream.json snapshot regenerated to
  include the new skill in the midstream plan.
- npm test: 1087/1087 green.

#868 Phase 1 coverage after this PR (4 axes complete)
- semantic / Platform-Native API / modern CSS — #873
- performance / Core Web Vitals — #875
- browser compatibility / Baseline awareness — #881
- accessibility (interactive UI) — this PR
- accessible name / static labels — existing
  rr-midstream-a11y-accessible-name-001

Phase 2 (review category taxonomy) and Phase 3 (diff-aware skill
routing) remain open.

Refs: #868. Follows #873 / #875 / #881.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@vercel

vercel Bot commented May 23, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ai-review-kit Ready Ready Preview, Comment May 23, 2026 11:54pm

@github-actions

Copy link
Copy Markdown
Contributor

River Reviewer

  • フェーズ: midstream
  • LLM: skipped (dry-run enabled)
  • Planner: off
  • Impact tags: none
  • 変更ファイル数: 1
  • トークン見積もり: 258

選択されたスキル (0)

  • none
スキップされたスキル (87)
  • adversarial-review: routing skill: not an executable review skill
  • river-reviewer-architecture: routing skill: not an executable review skill
  • river-reviewer-code: routing skill: not an executable review skill
  • river-reviewer-performance: routing skill: not an executable review skill
  • river-reviewer-security: routing skill: not an executable review skill
  • river-reviewer-testing: routing skill: not an executable review skill
  • river-reviewer: routing skill: not an executable review skill
  • rr-downstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-coverage-gap-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-flaky-test-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-existence-001: phase mismatch: downstream !== midstream; applyTo did not match any changed file; missing inputContext: tests
  • rr-downstream-test-naming-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-plan-review-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-downstream-test-review-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-a11y-accessible-name-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-a11y-interactive-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-browser-compat-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-performance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-modern-web-semantic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nextjs-app-router-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-agent-skill-bridge-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-api-compatibility-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-config-json-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-gh-address-comments-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-hello-skill-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-i18n-unused-key-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-loading-state-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-logging-observability-001: applyTo did not match any changed file
  • rr-midstream-logic-torturing-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-normalization-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-nullability-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-automation-boundary-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-review-comment-triage-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-security-basic-001: applyTo did not match any changed file
  • rr-midstream-suppression-feedback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-type-driven-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-nullcheck-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-typescript-strict-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-war-game-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-midstream-code-quality-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-review-policy-standard-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-nextjs-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-php-laravel-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-react-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-remix-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-python-pytest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-unit-ts-jest-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-test-code-vue-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-adr-decision-quality-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-api-versioning-compat-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-boundaries-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-diagrams-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-risk-register-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-traceability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-validation-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-availability-architecture-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-bounded-context-language-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-cache-strategy-consistency-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-capacity-cost-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-change-communication-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-context-budget-tuning-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-create-plan-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-flow-state-ownership-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-data-model-db-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-dr-multiregion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-eval-driven-skill-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-event-driven-semantics-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-external-dependencies-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-failure-modes-observability-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-integration-contracts-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-migration-rollout-rollback-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-multitenancy-isolation-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-openapi-contract-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-operability-slo-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-exec-conformance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-gc-deterministic-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-plan-integrity-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-rule-promotion-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-plangate-verification-audit-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pr-template-qa-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-pre-mortem-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-requirements-acceptance-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-security-privacy-design-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-trust-boundaries-authz-001: dry-run: LLM必須スキル(ヒューリスティック未対応)
  • rr-upstream-architecture-sample-001: dry-run: LLM必須スキル(ヒューリスティック未対応)

優先度サマリー

  • P1 (must fix before merge): 0 件

  • P2 (should fix or waive): 1 件

  • P3 (recommended improvement): 0 件

  • P4 (informational): 0 件

  • 抑制済み: 1 件 (主な理由: low_confidence(1))

スコア (参考値)

結果(スコア): 96/100
判定: human-review-recommended

内訳:

  • 可読性: 100/100
  • 拡張性: 100/100
  • パフォーマンス: 100/100
  • セキュリティ: 100/100
  • 保守性: 80/100

スコアは severity と axis から決定論的に算出された 参考値 (derived: true)。HITL レビューと併用してください。

指摘

  • skills/midstream/community/rr-midstream-modern-web-a11y-interactive-001/SKILL.md:1
    • Finding: マッチするスキルがなく自動指摘を生成できなかった
    • Evidence: LLM: dry-run enabled
    • Impact: 重要なリスクを見落とす可能性がある
    • Fix: このファイル種別に対応するスキルを追加するか、手動レビューを実施する
    • Severity: warning
    • Confidence: low

1 件の指摘を抑制しました (主な理由: low_confidence(1))

@github-actions

Copy link
Copy Markdown
Contributor

PlanGate Review

  • decision: pass
  • plan status: skipped-by-label
  • exec status: skipped-by-label

PlanGate review decision: pass

severity count policy
critical 0 fail
major 0 fail-if-required / warn
minor 0 comment-only
info 0 skipped

ポリシー: critical=fail / major=fail-if-required (warn) / minor=comment-only / info=skipped — spec: pages/reference/cli-review-plan-spec.md

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new skill definition for 'Modern Web Accessibility for Interactive UI' and adds it to the midstream execution plan. The skill provides accessibility suggestions for interactive components, covering keyboard navigation, focus management, and ARIA roles. There are no review comments to address, and I have no feedback to provide.

@s977043 s977043 merged commit 6283147 into main May 23, 2026
17 checks passed
@s977043 s977043 deleted the feat/868-modern-web-a11y-interactive-skill branch May 23, 2026 23:58
s977043 added a commit that referenced this pull request May 25, 2026
…ills (S3) (#899)

Implement S3 from the 2026-05-21..25 retrospective: catalog the community
tier explicitly so consumers can tell "core / curated" from "experimental
/ not yet eval-backed". Until now skills/midstream/community/* were
loaded at runtime but invisible in skills/registry.yaml, which Codex
flagged in the multi-perspective review as a scaling risk.

Add a new "Community Skills (Experimental)" subsection between the core
midstream block and the downstream block. Six skills listed:

- rr-midstream-a11y-accessible-name-001          (pre-existing)
- rr-midstream-nextjs-app-router-boundary-001    (pre-existing)
- rr-midstream-modern-web-semantic-001           (#873)
- rr-midstream-modern-web-performance-001        (#875)
- rr-midstream-modern-web-browser-compat-001     (#881)
- rr-midstream-modern-web-a11y-interactive-001   (#884)

All six are marked `recommended: false` so the catalog reflects current
truth: useful as opt-in suggestions, not first-line gates. The block
also carries a comment explaining the convention — a community skill
becomes a `recommended: true` candidate when it gains good/bad fixtures
and a golden output (the S1 convention queued for a later PR).

No code change; node scripts/validate-meta-consistency.mjs and
npm run skills:validate both pass. npm test: 1087/1087 green.

Refs: docs/development/retrospectives/2026-05-21-25.md (S3 entry).

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant