Agent Skillssupabase/supabase › studio-error-handling

studio-error-handling

GitHub

定义 Supabase Studio 的错误处理与展示模式,涵盖错误分类、UI 渲染及故障排查步骤,指导如何正确集成 ErrorMatcher 组件。

.claude/skills/studio-error-handling/SKILL.md supabase/supabase

触发场景

需要显示 API 请求或查询失败的 UI 提示 为新的错误类型添加故障排查步骤 从错误状态接入 AI 助手调试按钮

安装

npx skills add supabase/supabase --skill studio-error-handling -g -y
更多选项

非标准路径

npx skills add https://github.com/supabase/supabase/tree/master/.claude/skills/studio-error-handling -g -y

不安装直接使用

npx skills use supabase/supabase@studio-error-handling

指定 Agent (Claude Code)

npx skills add supabase/supabase --skill studio-error-handling -a claude-code -g -y

安装 repo 全部 skill

npx skills add supabase/supabase --all -g -y

预览 repo 内 skill

npx skills add supabase/supabase --list

SKILL.md

Frontmatter
{
    "name": "studio-error-handling",
    "description": "Error display and troubleshooting pattern for Supabase Studio. Use when showing a failed API request or query error in the UI (AlertError, toast, inline message), adding troubleshooting steps for a new error type, or wiring up the AI assistant debug button from an error state."
}

Studio Error Handling Pattern

Full docs and code examples: apps/studio/components/interfaces/ErrorHandling/README.md

How it works

Classification happens in the data layer: handleError in data/fetchers.ts tests the error message against ERROR_PATTERNS and throws the matching error subclass (e.g. ConnectionTimeoutError extends ResponseError). The component (ErrorMatcher) reads errorType from the instance and does an O(1) lookup — it never does regex matching.

handleError() → throws ConnectionTimeoutError → React Query catches → ErrorMatcher reads errorType → renders troubleshooting

Key files

File Purpose
data/error-patterns.ts Array of { pattern, ErrorClass } — the regex lives here
types/api-errors.ts Error classes, KnownErrorType union, ClassifiedError type
ErrorMatcher.tsx Component — reads errorType, looks up mapping, renders
error-mappings.tsx Record<KnownErrorType, { id, Troubleshooting: ComponentType }>
errorMappings/ConnectionTimeout.tsx Reference troubleshooting component
TroubleshootingSections.tsx Reusable accordion section components
TroubleshootingAccordion.tsx Accordion wrapper with telemetry

Usage

Pass the full error object from React Query — not error.message:

{
  isError && (
    <ErrorMatcher title="Failed to load tables" error={error} supportFormParams={{ projectRef }} />
  )
}

What NOT to do

  • Do not pass error.message to ErrorMatcher — pass the full error object so the class is preserved.
  • Do not put regex patterns in error-mappings.tsx — they belong in data/error-patterns.ts.
  • Do not use Object.assign to stamp errorType — throw a proper subclass instead.
  • Do not pass a raw URL string for support — use supportFormParams={{ projectRef }}.
  • Do not put the page title inside the error mapping — it belongs on the <ErrorMatcher> caller.
  • Do not add callback props (onDebugWithAI, onRestartProject) to troubleshooting components — use hooks inside them instead.

版本历史

  • a045804 当前 2026-08-20 19:17

同 Skill 集合

.agents/skills/api-types/SKILL.md
.agents/skills/copywriting/SKILL.md
.agents/skills/dev-toolbar-review/SKILL.md
.agents/skills/edit-the-docs/SKILL.md
.agents/skills/review-the-docs/SKILL.md
.agents/skills/studio-e2e-tests/SKILL.md
.agents/skills/studio-error-handling/SKILL.md
.agents/skills/studio-mock-api-tests/SKILL.md
.agents/skills/studio-queries/SKILL.md
.agents/skills/studio-shortcuts/SKILL.md
.agents/skills/studio-testing/SKILL.md
.agents/skills/studio-ui-patterns/SKILL.md
.agents/skills/telemetry-standards/SKILL.md
.agents/skills/test-the-docs/SKILL.md
.agents/skills/vercel-composition-patterns/SKILL.md
.agents/skills/vitest/SKILL.md
.agents/skills/write-the-docs/SKILL.md
.claude/skills/copywriting/SKILL.md
.claude/skills/dev-toolbar-review/SKILL.md
.claude/skills/docs-content/SKILL.md
.claude/skills/studio-e2e-tests/SKILL.md
.claude/skills/studio-mock-api-tests/SKILL.md
.claude/skills/studio-queries/SKILL.md
.claude/skills/studio-testing/SKILL.md
.claude/skills/studio-ui-patterns/SKILL.md
.claude/skills/telemetry-standards/SKILL.md
.claude/skills/vercel-composition-patterns/SKILL.md
apps/studio/.claude/skills/explorer/SKILL.md
.agents/skills/ask-the-docs/SKILL.md
.agents/skills/clickhouse-logs-queries/SKILL.md
.agents/skills/pm-the-docs/SKILL.md
.agents/skills/react-hook-form/SKILL.md
.agents/skills/safe-sql-execution/SKILL.md
.claude/skills/clickhouse-logs-queries/SKILL.md
.claude/skills/react-hook-form/SKILL.md
.claude/skills/safe-sql-execution/SKILL.md

元信息

文件数
0
版本
86c813e
Hash
9c41aad7
收录时间
2026-08-20 19:17

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-23 15:21
浙ICP备14020137号-1