闲社服务运行正常AI智能体自动化平台
s

Supabase集成

技能标识:supabase-hakke

Supabase integration for Hakke Studio projects. Auth, database, storage, edge functions. Use with vercel skill for full-stack deployment.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.1.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

Supabase集成

Hakke Studio 的 Supabase 集成

专为 Hakke Studio 项目定制的 Supabase 集成方案。

当前项目

项目Supabase 地址用途
hakke-apphttps://[project].supabase.co多租户 SaaS 平台

CLI 安装

bash

Supabase CLI(已安装)


supabase --version

若未安装

npm install -g supabase

身份认证

登录 Supabase

bash
supabase login

此命令将打开浏览器,通过 contacto@hakke.cl 进行 OAuth 登录。

关联项目

bash
cd /home/bastianberrios/proyectos/HAKKE/hakke-app
supabase link --project-ref <项目ID>



数据库操作

生成类型定义

bash
supabase gen types typescript --local > lib/supabase/database.types.ts

创建迁移文件

bash
supabase migration new <迁移名称>

应用迁移

bash
supabase db push

重置数据库(仅限开发环境)

bash
supabase db reset



认证操作

获取 API 密钥

bash
supabase status

返回结果:

  • - anon key - 公钥(客户端使用)
  • service_role key - 密钥(仅限服务端使用)

创建用户(管理员)

sql
-- 在 Supabase 控制台 SQL 编辑器中执行
INSERT INTO auth.users (email, encryptedpassword, emailconfirmed_at)
VALUES (
user@example.com,
crypt(password123, gen_salt(bf)),
NOW()
);



RLS(行级安全)

启用 RLS

sql
ALTER TABLE users ENABLE ROW LEVEL SECURITY;

创建策略

sql
-- 用户只能查看自己的数据
CREATE POLICY 用户只能查看自己的数据
ON users
FOR SELECT
USING (auth.uid() = id);

-- 用户只能更新自己的数据
CREATE POLICY 用户只能更新自己的数据
ON users
FOR UPDATE
USING (auth.uid() = id);



存储操作

创建存储桶

sql
-- 在 Supabase 控制台 SQL 编辑器中执行
INSERT INTO storage.buckets (id, name, public)
VALUES (avatars, avatars, false);

存储策略

sql
-- 用户可上传文件到自己的文件夹
CREATE POLICY 用户可上传头像
ON storage.objects
FOR INSERT
WITH CHECK (
bucket_id = avatars
AND auth.uid()::text = (storage.foldername(name))[1]
);



边缘函数

创建函数

bash
supabase functions new <函数名称>

部署函数

bash
supabase functions deploy <函数名称>

调用函数

bash
curl -i -L --request POST https://.supabase.co/functions/v1/<函数名称> \
--header Authorization: Bearer <匿名密钥> \
--header Content-Type: application/json \
--data {name:Functions}



多租户 SaaS(hakke-app)

架构设计

┌─────────────────────────────────────────┐
│ hakke-app (SaaS) │
├─────────────────────────────────────────┤
│ tenants 表(多租户) │
│ - id, slug, name, plan │
│ - owner_id (外键 → auth.users) │
│ - subscription_status │
├─────────────────────────────────────────┤
│ 行级安全 (RLS) │
│ - tenantid = currenttenant() │
└─────────────────────────────────────────┘

租户隔离

sql
-- 获取当前租户的函数
CREATE OR REPLACE FUNCTION currenttenantid()
RETURNS uuid AS $$
BEGIN
RETURN (auth.jwt()->>tenant_id)::uuid;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

-- RLS 策略示例
CREATE POLICY 用户只能查看自己租户的数据
ON appointments
FOR ALL
USING (tenantid = currenttenant_id());

订阅管理

sql
-- 检查订阅状态
CREATE OR REPLACE FUNCTION hasactivesubscription()
RETURNS boolean AS $$
DECLARE
tenant_record tenants%ROWTYPE;
BEGIN
SELECT * INTO tenant_record
FROM tenants
WHERE id = currenttenantid();

RETURN tenantrecord.subscriptionstatus = active;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;



常用查询

列出所有表

sql
SELECT table_name
FROM information_schema.tables
WHERE table_schema = public;

查看表结构

sql
SELECT
column_name,
data_type,
is_nullable,
column_default
FROM information_schema.columns
WHERE table_name = users;

检查 RLS 状态

sql
SELECT
schemaname,
tablename,
rowsecurity
FROM pg_tables
WHERE schemaname = public;



环境变量

.env.local

bash
NEXTPUBLICSUPABASE_URL=https://.supabase.co
NEXTPUBLICSUPABASEANONKEY=<匿名密钥>
SUPABASESERVICEROLE_KEY=<服务角色密钥>

.env.example(提交到 Git)

bash
NEXTPUBLICSUPABASE_URL=
NEXTPUBLICSUPABASEANONKEY=
SUPABASESERVICEROLE_KEY=



客户端配置

服务端客户端(Next.js)

typescript
// lib/supabase/server.ts
import { createClient } from @supabase/supabase-js;
import { cookies } from next/headers;

export function createServerClient() {
const cookieStore = cookies();

return createClient(
process.env.NEXTPUBLICSUPABASE_URL!,
process.env.NEXTPUBLICSUPABASEANONKEY!,
{
auth: {
persistSession: false,
},
}
);
}

浏览器客户端(Next.js)

typescript
// lib/supabase/client.ts
import { createClient } from @supabase/supabase-js;

export const supabase = createClient(
process.env.NEXTPUBLICSUPABASE_URL!,
process.env.NEXTPUBLICSUPABASEANONKEY!
);



故障排查

连接问题

bash

检查 Supabase 是否可访问


curl -I https://.supabase.co/rest/v1/

预期结果:401 Unauthorized(表示 API 正常运行,仅需认证)

RLS 不生效

sql
-- 检查 RLS 是否启用
SELECT tablename, rowsecurity
FROM pg_tables
WHERE schemaname = public;

-- 检查策略
SELECT
schemaname,
tablename,
policyname,
permissive,
roles,
cmd,
qual,
with_check
FROM pg_policies
WHERE schemaname = public;

认证问题

bash

检查用户是否存在


supabase auth list

查看日志

supabase logs auth

与 Vercel 集成

部署到 Vercel

bash

在 hakke-app 目录中


vercel

在 Vercel 控制台或 CLI 中添加环境变量

vercel env add NEXTPUBLICSUPABASE_URL vercel env add NEXTPUBLICSUPABASEANONKEY vercel env add SUPABASESERVICEROLE_KEY

最佳实践

实践原因
始终启用 RLS安全第一
服务密钥仅限服务端
切勿暴露给客户端 | | 生成类型定义 | 类型安全的查询 | | 迁移文件纳入 Git | 可重现的数据库 | | 分离匿名/服务密钥 | 最小权限原则 |

资源

  • - 文档:https://supabase.com/docs
  • 控制台:https://supabase.com/dashboard
  • CLI 参考:https://supabase.com/docs/reference/cli
  • SQL 编辑器:控制台 → SQL 编辑器
  • 日志:控制台 → 日志

Supabase Hakke v1.1.0 - 为 Hakke Studio 提供生产级支持

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 supabase-hakke-1776286299 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 supabase-hakke-1776286299 技能

通过命令行安装

skillhub install supabase-hakke-1776286299

下载

⬇ 下载 supabase-hakke v1.1.0(免费)

文件大小: 3.36 KB | 发布时间: 2026-4-16 16:39

v1.1.0 最新 2026-4-16 16:39
- Major documentation update: expanded and refined SKILL.md with detailed usage instructions and code examples.
- Added sections for multi-tenant SaaS architecture, RLS policies, and subscription management.
- Included best practices, troubleshooting steps, and environment setup guidance.
- Clarified integration steps with Vercel and provided example client implementations for Next.js.
- Improved structure for easier onboarding and production-readiness for Hakke Studio projects.
返回顶部