一键导入
accessibility
Accessibility patterns and requirements for this project. Use when creating interactive components, forms, dialogs, or any user-facing UI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Accessibility patterns and requirements for this project. Use when creating interactive components, forms, dialogs, or any user-facing UI.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Reproduce a research paper / white paper / arXiv result as a Tangle pipeline. Use when the user asks to "reproduce", "replicate", or "implement" a paper, benchmark, or arXiv link as an experiment.
Drive the open-source Tangle CLI (`tangle-cli`) via Bash for local pipeline/component workflows and API-backed run submission, status, logs, and artifacts. Use whenever an agent needs to validate, hydrate, submit, inspect, or debug Tangle pipelines and runs from the command line.
Answer Tangle product, docs, and how-to questions from a local RAG over the TangleML documentation. Use for conceptual / "what is" / "how do I" lookups, not live run or execution data.
TanStack Router patterns for routing, navigation, search params, and layouts. Use when creating routes, navigating, or working with URL state.
Comprehensive Reveal.js reference for building HTML slide decks. Use whenever the user wants to create, revise, or extend a presentation, slide deck, or talk — especially from Markdown — including transitions, Auto-Animate, Mermaid diagrams, animatable SVG, video, backgrounds, fragments, code highlighting, speaker notes, math, themes, configuration, and PDF export.
Gather, vet, and cite sources for a research question. Use when answering factual questions, comparing options, or producing an evidence-backed write-up.
| name | accessibility |
| description | Accessibility patterns and requirements for this project. Use when creating interactive components, forms, dialogs, or any user-facing UI. |
Several base primitives in @/shared/ui are built on Radix UI (radix-ui /
@radix-ui/react-* — e.g. tooltip, collapsible, dropdown-menu, popover, separator), which provides
strong built-in focus management and keyboard handling. Follow these patterns to maintain that
standard. Prefer the design-system primitives (see ui-primitives) over hand-rolled markup — they
bake in the a11y affordances.
Any interactive element without visible text needs an accessible name.
IconButton pattern for square icon-only buttons — it requires an aria-label.Button with only an Icon child, pass aria-label explicitly.import { IconButton } from "@/shared/ui/patterns/icon-button";
<IconButton icon="Trash2" aria-label="Delete bundle" onClick={onDelete} />;
Required keyboard support for custom interactive elements:
Radix-backed primitives (dropdown-menu, popover, tooltip, tabs, collapsible) handle focus trapping
and arrow-key navigation for you — don't reimplement it. For your own non-button clickable elements,
add role="button", tabIndex={0}, and a keydown handler:
<div
role="button"
tabIndex={0}
aria-label={`Folder: ${name}`}
onClick={toggle}
onKeyDown={(e) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
toggle();
}
}}
/>
For a multi-line editor built on Textarea, handle Enter/Escape in onKeyDown (e.g. Enter to
submit, Shift+Enter for newline, Escape to cancel).
Use the sr-only utility for visually hidden but screen-reader-accessible text on raw HTML
elements (this is allowed — the no-className rule only applies to Tangle primitives):
<button aria-label="Close">
<Icon name="X" />
<span className="sr-only">Close</span>
</button>
Use proper semantic elements and roles:
<nav aria-label="breadcrumb">
<span aria-current="page">{label}</span>
<div role="alert">{errorMessage}</div>
Layout primitives forward ARIA props — BlockStack/InlineStack accept ARIA attributes, and
Text/Heading/Paragraph accept role and ARIA props — so you can keep semantics without
dropping to raw HTML.
Don't remove focus indicators. Base interactive primitives (Button, IconButton, Radix
components) already render a visible focus-visible ring. If you build a local primitive on a raw
element, keep a visible focus indicator — never outline-none without a replacement ring.
This repo has no dedicated Input/Label/Select/Dialog primitives today — text entry uses
Textarea, and choices use checkbox / tabs / dropdown-menu. When you build form controls:
htmlFor / id, or wrap the control in a <label>).aria-invalid and link help/error text via aria-describedby.