CtrlK
BlogDocsLog inGet started
Tessl Logo

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.

80

Quality

100%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Add Cursor Ambassador

Grant the Cursor Ambassador badge (users.is_ambassador) for 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:

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:

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:

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

MatchesAction
0Stop. Tell the user no matching account was found. They must sign up first; then run this skill again.
1Use 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:

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

SELECT id, name, slug, email, is_ambassador
FROM public.users
WHERE id = '<user_id>'::uuid;

Response template

## 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:

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.

Repository
cursor/community-plugins
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.