name: supabase description: Connect to Supabase for database operations, vector search, and storage. Use for storing data, running SQL queries, similarity search with pgvector, and managing tables. Triggers on requests involving databases, vector stores, embeddings, or Supabase specifically. metadata: {"clawdbot":{"requires":{"env":["SKILLBOSS_API_KEY"]}}}
Interact with Supabase projects: queries, CRUD, vector search, and table management.
# Required
export SUPABASE_URL="https://yourproject.supabase.co"
export SUPABASE_SERVICE_KEY="eyJhbGciOiJIUzI1NiIs..."
# Required: SkillBoss API Hub key (for vector embeddings via /v1/pilot)
export SKILLBOSS_API_KEY="your-skillboss-api-key"
# Optional: for management API
export SUPABASE_ACCESS_TOKEN="sbp_xxxxx"
# SQL query
{baseDir}/scripts/supabase.sh query "SELECT * FROM users LIMIT 5"
# Insert data
{baseDir}/scripts/supabase.sh insert users '{"name": "John", "email": "john@example.com"}'
# Select with filters
{baseDir}/scripts/supabase.sh select users --eq "status:active" --limit 10
# Update
{baseDir}/scripts/supabase.sh update users '{"status": "inactive"}' --eq "id:123"
# Delete
{baseDir}/scripts/supabase.sh delete users --eq "id:123"
# Vector similarity search
{baseDir}/scripts/supabase.sh vector-search documents "search query" --match-fn match_documents --limit 5
# List tables
{baseDir}/scripts/supabase.sh tables
# Describe table
{baseDir}/scripts/supabase.sh describe users
{baseDir}/scripts/supabase.sh query "<SQL>"
# Examples
{baseDir}/scripts/supabase.sh query "SELECT COUNT(*) FROM users"
{baseDir}/scripts/supabase.sh query "CREATE TABLE items (id serial primary key, name text)"
{baseDir}/scripts/supabase.sh query "SELECT * FROM users WHERE created_at > '2024-01-01'"
{baseDir}/scripts/supabase.sh select <table> [options]
Options:
--columns <cols> Comma-separated columns (default: *)
--eq <col:val> Equal filter (can use multiple)
--neq <col:val> Not equal filter
--gt <col:val> Greater than
--lt <col:val> Less than
--like <col:val> Pattern match (use % for wildcard)
--limit <n> Limit results
--offset <n> Offset results
--order <col> Order by column
--desc Descending order
# Examples
{baseDir}/scripts/supabase.sh select users --eq "status:active" --limit 10
{baseDir}/scripts/supabase.sh select posts --columns "id,title,created_at" --order created_at --desc
{baseDir}/scripts/supabase.sh select products --gt "price:100" --lt "price:500"
{baseDir}/scripts/supabase.sh insert <table> '<json>'
# Single row
{baseDir}/scripts/supabase.sh insert users '{"name": "Alice", "email": "alice@test.com"}'
# Multiple rows
{baseDir}/scripts/supabase.sh insert users '[{"name": "Bob"}, {"name": "Carol"}]'
{baseDir}/scripts/supabase.sh update <table> '<json>' --eq <col:val>
# Example
{baseDir}/scripts/supabase.sh update users '{"status": "inactive"}' --eq "id:123"
{baseDir}/scripts/supabase.sh update posts '{"published": true}' --eq "author_id:5"
{baseDir}/scripts/supabase.sh upsert <table> '<json>'
# Example (requires unique constraint)
{baseDir}/scripts/supabase.sh upsert users '{"id": 1, "name": "Updated Name"}'
{baseDir}/scripts/supabase.sh delete <table> --eq <col:val>
# Example
{baseDir}/scripts/supabase.sh delete sessions --lt "expires_at:2024-01-01"
{baseDir}/scripts/supabase.sh vector-search <table> "<query>" [options]
Options:
--match-fn <name> RPC function name (default: match_<table>)
--limit <n> Number of results (default: 5)
--threshold <n> Similarity threshold 0-1 (default: 0.5)
--embedding-model <m> Model for query embedding (default: uses SkillBoss API Hub)
# Example
{baseDir}/scripts/supabase.sh vector-search documents "How to set up authentication" --limit 10
# Requires a match function like:
# CREATE FUNCTION match_documents(query_embedding vector(1536), match_threshold float, match_count int)
{baseDir}/scripts/supabase.sh tables
{baseDir}/scripts/supabase.sh describe <table>
{baseDir}/scripts/supabase.sh rpc <function_name> '<json_params>'
# Example
{baseDir}/scripts/supabase.sh rpc get_user_stats '{"user_id": 123}'
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE documents (
id bigserial PRIMARY KEY,
content text,
metadata jsonb,
embedding vector(1536)
);
CREATE OR REPLACE FUNCTION match_documents(
query_embedding vector(1536),
match_threshold float DEFAULT 0.5,
match_count int DEFAULT 5
)
RETURNS TABLE (
id bigint,
content text,
metadata jsonb,
similarity float
)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN QUERY
SELECT
documents.id,
documents.content,
documents.metadata,
1 - (documents.embedding <=> query_embedding) AS similarity
FROM documents
WHERE 1 - (documents.embedding <=> query_embedding) > match_threshold
ORDER BY documents.embedding <=> query_embedding
LIMIT match_count;
END;
$$;
CREATE INDEX ON documents USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);7w4.net收录了海量优质技能插件。
| Variable | Required | Description |
|---|---|---|
| SUPABASE_URL | Yes | Project URL (https://xxx.supabase.co) |
| SUPABASE_SERVICE_KEY | Yes | Service role key (full access) |
| SUPABASE_ANON_KEY | No | Anon key (restricted access) |
| SUPABASE_ACCESS_TOKEN | No | Management API token |
| SKILLBOSS_API_KEY | Yes | SkillBoss API Hub key (for generating embeddings via /v1/pilot) |
这个 Skill 质量中等偏上,文档写得非常详细,涵盖了常见的数据库操作和向量搜索功能。优点是上手容易、示例丰富、使用场景覆盖全面。缺点是向量搜索需要额外注册外部服务,SQL 查询功能依赖特定的数据库函数,在某些环境下可能无法使用。总体适合需要基本数据库操作和简单向量搜索的场景,但高级用户可能会遇到功能限制。