Skip to main content

add-cursor-ambassador

Adds Cursor Directory ambassador badges by name or email via Supabase. Resolves the person and sets users.is_ambassador. Use when the user asks to add, grant, or promote an ambassador, ambassador badge, or Cursor Ambassador.

Source facts

Repository
cursor/community-plugins
Last source activity
May 19, 2026 at 17:56
Detected SKILL.md language
English
Stars
4,005
Forks
669

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-cursor-ambassador
description
Adds Cursor Directory ambassador badges by name or email via Supabase. Resolves the person and sets users.is_ambassador. Use when the user asks to add, grant, or promote an ambassador, ambassador badge, or Cursor Ambassador.
disable-model-invocation
true
# Add Cursor Ambassador Grant the **Cursor Ambassador** badge (`users.is_ambassador`) for [cursor.directory](https://cursor.directory). The user provides a **name** or **email** (one person per invocation unless they list several). The person must already have a cursor.directory account. ## Prerequisites - **Supabase MCP** connected (`user-supabase` server). - **Project ID**: `knhgkaawjfqqwmsgmxns` (Cursor Directory). ## Workflow Copy and track progress: ``` - [ ] Step 1: Resolve identifier → user row(s) - [ ] Step 2: Confirm if multiple matches - [ ] Step 3: Set is_ambassador = true - [ ] Step 4: Verify and report profile URL ``` ### Step 1: Resolve identifier **If input looks like an email** (contains `@`), normalize: `trim().toLowerCase()`. **Lookup by email:** ```sql SELECT id, name, slug, email, is_ambassador FROM public.users WHERE lower(email) = lower('<email>') LIMIT 5; ``` **If input is a name** (or ambiguous), search: ```sql SELECT id, name, slug, email, is_ambassador FROM public.users WHERE name ILIKE '%<name>%' ORDER BY name LIMIT 20; ``` **If input is a UUID**, treat as user id: ```sql SELECT id, name, slug, email, is_ambassador FROM public.users WHERE id = '<uuid>'::uuid; ``` Use MCP `execute_sql` with `project_id: knhgkaawjfqqwmsgmxns`. ### Step 2: Disambiguate | Matches | Action | | ------- | ------ | | 0 | Stop. Tell the user no matching account was found. They must sign up first; then run this skill again. | | 1 | Use that row | | 2+ | Show a short table (name, slug, email) and ask which person to promote. Do not guess. | ### Step 3: Promote If `is_ambassador` is already `true`, report they are already an ambassador and link their profile. Otherwise: ```sql UPDATE public.users SET is_ambassador = true WHERE id = '<user_id>' RETURNING id, name, slug, email, is_ambassador; ``` Report: **promoted** with profile URL `https://cursor.directory/u/<slug>`. ### Step 4: Verify ```sql SELECT id, name, slug, email, is_ambassador FROM public.users WHERE id = '<user_id>'::uuid; ``` ## Response template ```markdown ## Ambassador: <name or email> **Status:** promoted | already ambassador | not found **Profile:** https://cursor.directory/u/<slug> **Email:** <email> ``` ## Removing ambassadors Only when the user explicitly asks to remove or revoke: ```sql UPDATE public.users SET is_ambassador = false WHERE id = '<user_id>' RETURNING id, name, slug, email; ``` ## Notes - Badge UI: `AmbassadorBadge` when `is_ambassador` is true; listed under `/members` → Ambassadors tab. - If the legacy `/api/cron/sync-ambassadors` job is still scheduled in Vercel, disable it so it does not fight manual grants. ## Batch adds For multiple people, run Steps 1–3 once per person. Summarize results in a table at the end.
View on GitHub