Storybook component QA
Storybook component QA 表示仓库把 Storybook 当作组件级文档、状态枚举、视觉检查或 interaction smoke 的稳定入口。它不等同于 Storybook accessibility:只有项目明确引入 a11y addon 或等价 Axe sweep 时,才同时打 accessibility Topic。这个拆分用于避免“只要有 Storybook 就叫 a11y”的误判。
- 前端
目录
Definition
Storybook component QA 表示仓库把 Storybook 当作组件级文档、状态枚举、视觉检查或 interaction smoke 的稳定入口。它不等同于 Storybook accessibility:只有项目明确引入 a11y addon 或等价 Axe sweep 时,才同时打 accessibility Topic。这个拆分用于避免“只要有 Storybook 就叫 a11y”的误判。
这个 Topic 关注组件在应用上下文之外是否可复现、可审查、可截图和可交互。它适合作为 UI 改动的低成本证据入口,尤其在 shadcn/ui、设备控制台、ops dashboard 和嵌入式管理 UI 中,用 stories 固定复杂状态比临时浏览器点检更可靠(projects/proxy-broker.md、projects/dockrev.md)。
When to use
当项目有 .storybook/、storybook / build-storybook / test-storybook 脚本、story files,且这些 story 会影响 UI 评审、截图、docs 或组件交互验证时使用。若 Storybook 只是历史残留、没有脚本或 story surface,应先复核再标记。
如果改动会新增或改变 reusable component、form state、Dialog/Popover、dashboard card、设备控制面板、错误态、空态或视觉主题,并且 repo 有 Storybook 入口,应使用本 Topic。若只有应用级 e2e,没有组件级 story surface,则应记录为 Playwright/browser QA,而不是硬贴 Storybook(projects/blog-26.md)。
Habits / defaults
- Storybook 先回答“组件状态是否可见、可复现、可截图”,再由 Playwright/e2e 回答完整用户旅程;
projects/octo-rill.md和projects/proxy-broker.md把两者分开。 - 没有 a11y addon 证据时,默认只标记 component QA;
projects/blog-26.md、projects/dockrev.md都显式保留这个边界。 - Storybook 端口和 daemon 脚本属于本地运行 contract;交给用户预览前仍要走全局端口租约,而不是直接复用项目默认端口。
- 对于设备/ops UI,stories 应覆盖空态、错误态、长文本、深色/浅色主题、移动视口和危险操作确认,而不是只展示 happy path。
- Storybook 与真实 app 的责任要分开:Storybook 用来稳定组件状态和视觉证据,Playwright/e2e 用来覆盖 route、auth、API、SSE 和真实数据流。两者互补,不能互相替代(
projects/octo-rill.md)。 - 当 stories 作为 PR 证据时,应保证入口可重复运行,并记录所用命令、端口租约或截图路径;否则 owner 只能看到一次性图片,无法复查组件状态(
projects/dockrev.md)。
Reference implementations
projects/proxy-broker.md:Storybook、verify-stories、test-storybook、Playwright 共同构成 shadcn/ui 操作台 QA。projects/dockrev.md:Storybook daemon 与 screenshot scripts 支撑运维 UI 的视觉证据。projects/loadlynx.md/projects/isolappurr-usb-hub.md:设备 Web UI 用 Storybook 作为硬件之外的早期界面验证。projects/codex-vibe-monitor.md:dashboard UI 使用 Storybook docs/a11y 记录组件状态,适合检查监控类界面的 loading、empty、historical data 和 SSE 状态。projects/kaisoumail.md:Cloudflare control plane 的 Storybook surface 支撑表单型管理台的组件评审。
Failure modes
- 把 Storybook presence 误命名为 accessibility,会让后续 Agent 误以为已有 Axe/contrast gate。
- 只写 stories 不运行 story build/test,会让组件状态在 PR 中悄悄腐烂。
- 把 Storybook 截图当成端到端证据,会漏掉路由、API、auth、real data 和硬件交互问题。
- 只给组件 happy path 写 story,会让危险操作、错误恢复、长文本和权限状态无证据。改动面如果涉及这些状态,应先补 story,再截图或运行 test-storybook(
projects/proxy-broker.md)。 - 把 Storybook dev server 的默认端口直接交给用户,会和全局端口租约冲突;owner-facing 预览仍需要当前工作区持有的服务会话(
projects/style-playbook-skills.md)。
Evidence index
projects/proxy-broker.mdprojects/dockrev.mdprojects/octo-rill.mdprojects/blog-26.mdskills/style-playbook/references/data/topic-candidates.jsonskills/style-playbook-write/scripts/catalog.py
相关内容
Ivan's Blog 2026
项目实践Ivan's Blog 2026 是 Ivan 博客平台的公开开源镜像,由 Astro public site、Vite/React admin SPA 和 Bun gateway/API 组成。README.md、astro.config.mjs、apps/admin/、src/server/ 和 package.
Codex Vibe Monitor
项目实践Codex Vibe Monitor 是面向自部署的 OpenAI 兼容代理观测工作台:它接入 /v1/* HTTP / WebSocket 流量,将调用留证、实时 SSE、历史统计、请求排障、上游账号池、forward proxy、价格目录和 SQLite 持久化收在同一套运营界面中。
Dockrev
项目实践Dockrev 是 self-hosted Docker/Compose update manager。README.md 把根文档定位为快速入口,完整部署、使用、运维、排障和 API 文档在 docs-site/,这说明它是运维工具而不是普通 CRUD 管理台。
Flux Purr
项目实践Flux Purr 是 embedded firmware + React control console 的设备 mono-repo。README.md 将仓库组织为 firmware/、web/、tools/flux-purr-devd/、docs/specs/、docs/hardware/、.
IsolaPurr USB Hub
项目实践IsolaPurr USB Hub 是带 USB-C 上行、USB-C 下行和 USB-A 下行的有源 USB 集线器/供电模块。README.md 记录 CH334P、URB2405S、CH224Q、TPS55288、SW2303/IP6557、DC5025 输入和理想二极管 OR-ing 等硬件方案,说明这是硬件/固件/Web/文档一体的 device mono-repo。
KaisouMail
项目实践KaisouMail 是 Cloudflare temporary email platform,基于 Email Routing、Workers、D1、R2,以及 React + shadcn/ui control plane。README.md 和 README.zh-CN.md 同时存在,说明文档需要中英双语入口;公开 docs site 与 Storybook 也是产品交付面,而不只是开发辅助。
LoadLynx
项目实践LoadLynx 是 STM32G431 + ESP32-S3 便携式电子负载。README.md 明确采用分体式架构:STM32G431 执行快速电流/功率闭环与保护,ESP32-S3 负责 UI/Wi-Fi/OTA/记录/标定及上位机桥接。这是典型 device mono-repo,不能只从一个 firmware 目录理解。
MCU Agentd
项目实践MCU Agentd 是可配置 MCU 管理工具,包含每项目 daemon/CLI mcu-agentd 和用户级辅助 daemon mcu-managerd。README.md 明确它通过 mcu-agentd.toml 定义多个 MCU target,并基于 espflash 与 probe-rs 执行操作,当前 v1 只支持 ELF artifact 和固定策略。
OctoRill
项目实践OctoRill 把与 Ivan 相关的 GitHub 动态整理成适合持续阅读的工作区:发布更新、获星/关注动态、日报和 Inbox,发布内容还支持中文翻译和要点整理。README.md 同时指向 public docs-site、quick start、config、product 和 internal docs,说明它是产品化 Rust 服务 + React UI + 文档站,而不是一次性脚本。
PastePreset
项目实践PastePreset 是一个 privacy-first、纯浏览器端的图片处理 Web app。package.json、README.md、docs/pwa-offline-support.md 和 public/manifest.
Proxy Broker
项目实践Proxy Broker 是 standalone Rust service,用于加载 mihomo subscriptions,按 IP 构建带 probe/geo metadata 的代理池,按选择的 IP 开关本地 proxy listener sessions,并从同一 binary 提供 Bun-built operator web console。README.
Style Playbook Skills
项目实践Style Playbook Skills 是 Ivan style playbook 的 source-of-truth 仓库:它保存人工维护的 project snapshots、Topic packages、六个 global group Skills,以及用于浏览、筛选和触发生成任务的本地 library site。
Tuckmark
项目实践Tuckmark 是一个 agent-native label printing workspace,统一承载打印机发现、能力探测、模板渲染、批量预览、位图打印,以及 CLI、MCP、HTTP 和 Web surfaces(README.md)。
XP Cluster Manager
项目实践XP Cluster Manager 是 self-hosted multi-host Xray cluster manager。README.md 明确每台 host 运行 xp 和 xray 两个进程,xp 用 OpenRaft 保存 cluster-wide desired state,并通过 Xray gRPC API reconcile 本地 runtime。