{"slug": "supabase-skills-to-run-your-business-ops", "title": "Supabase Skills to run your business ops", "summary": "Skene Technologies released Skene Skills, a set of pre-built backend modules for CRM, billing, helpdesk, and project management that install directly into a Supabase Postgres database. The open-source package provides standardized database schemas, tables, and security policies to replace custom backend development, allowing AI agents to build business applications without starting from scratch. The product addresses growing concerns about vendor lock-in as platforms like Salesforce and Meta restrict data access for AI training, giving companies full ownership of their business data.", "body_md": "[Why](#why-this-exists) ·\n[Quick Start](#quick-start) ·\n[Available Skills](#available-skills) ·\n[AI Agents](#built-for-ai-agents) ·\n[Skene Cloud](#skene-cloud-optional) ·\n[Dependencies](/SkeneTechnologies/skene/blob/main/skills/docs/dependencies.md)\n\nInstall backend Skills into your Supabase project. CRM, billing, helpdesk, project management, calendar, and more. Each Skill adds tables, enums, RLS policies, and seed data. Pick what you need.\n\n```\nnpx @skene/database-skills init\n```\n\nOne command. Installs the package, configures your AI tools, detects Supabase MCP. Your next agent session sets up the database automatically.\n\nThe same data model that powers Salesforce, HubSpot, Jira, Zendesk, and Stripe. Except you own it.\n\nAI can build a frontend in minutes. Cursor, Claude Code, v0, Bolt -- they generate UI fast. But every project still starts with an empty Postgres instance and a blank migration file.\n\nEvery founder using AI to build a SaaS product hits the same wall in the first hour. What tables do I need? How do I handle multi-tenancy? What should my RLS look like?\n\nThese are solved problems. But everyone solves them alone, from scratch, every time.\n\nComposable backend capabilities you install and build on.\n\nEvery business app stores the same data. CRM, helpdesk, project management, billing -- 80% of the schema is identical. That 80% should not be custom work every time.\n\nAn agent building on a well-defined, documented schema writes better code with fewer tokens than one guessing your data model. Less prompting, more building.\n\nIn 2025, the platforms you pay to store your business data started locking it down. Salesforce [changed its Slack API terms](https://www.computerworld.com/article/4005509/salesforce-changes-slack-api-terms-to-block-bulk-data-access-for-llms.html) to prohibit bulk data export and explicitly block using data accessed via Slack APIs to train LLMs. Third-party AI tools that had been indexing Slack conversations to build internal copilots were cut off overnight.\n\nMeta updated its WhatsApp Business terms to prohibit third-party AI providers from using the API if AI is their primary service, prompting the [European Commission to open a formal antitrust investigation](https://ec.europa.eu/commission/presscorner/detail/en/ip_25_2896) and [Italy's antitrust authority to force Meta to suspend the restrictive terms](https://en.agcm.it/en/media/press-releases/2025/12/A576).\n\nThe pattern is the same everywhere. You store data in a vendor's system. The vendor decides you can't use that data to train your own AI, feed it to a competitor's model, or even export it without restrictions. Your CRM data, your support tickets, your team conversations -- all behind someone else's API, subject to terms they can change whenever they want.\n\nSkene Skills deploy directly into your Supabase Postgres instance. No per-seat pricing. No rate-limited APIs. No Zapier glue between tools. One database you control. When you want to train an AI on your customer data, query it from your own tables, or pipe it into whatever model you choose, nobody can change the terms on you. The data is yours because the database is yours.\n\n```\nnpx @skene/database-skills init\n```\n\nThis does three things:\n\n- Installs the package in your project\n- Configures your AI tools (Claude Code, Cursor, Windsurf, Copilot, Cline)\n- Detects Supabase MCP and environment keys\n\nYour agent reads the config, discovers the skill, and asks what you're building:\n\n| Preset | Skills |\n|---|---|\n`crm` |\nidentity, crm, pipeline, comms, analytics |\n`helpdesk` |\nidentity, crm, support, comms, content, knowledge, analytics |\n`billing` |\nidentity, crm, billing, commerce, analytics |\n`project` |\nidentity, tasks, content, calendar, analytics |\n`marketing` |\nidentity, crm, campaigns, forms, analytics |\n`full` |\nall 19 skills |\n\nThe agent applies the schema to your Supabase project via MCP — no connection string needed.\n\n```\nnpx @skene/database-skills crm --db $DATABASE_URL --seed\n```\n\nResolves dependencies, applies migrations, loads demo data. Pass comma-separated skill names for custom combinations: `npx @skene/database-skills crm,pipeline,support`\n\n```\n# Install all Skene Skills\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills\n\n# Or install specific skills\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills -s crm\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills -s billing\n```\n\nSkills install to `.claude/skills/`\n\n(or the equivalent directory for your AI agent). Each skill includes a `SKILL.md`\n\nwith full schema documentation, example queries, and a `migration.sql`\n\nyour agent applies to Supabase.\n\nNo agent needed. Run the SQL files against your Supabase project:\n\n```\npsql \"$DATABASE_URL\" -f identity/migration.sql\npsql \"$DATABASE_URL\" -f crm/migration.sql\npsql \"$DATABASE_URL\" -f pipeline/migration.sql\n```\n\nEach skill includes a `seed.sql`\n\nwith realistic sample data:\n\n```\npsql \"$DATABASE_URL\" -f identity/seed.sql\npsql \"$DATABASE_URL\" -f crm/seed.sql\n```\n\nCreates fictional data you can build against immediately -- contacts, companies, deals, tickets, billing, and activity records.\n\n| Skill | What it adds to your Supabase project | Depends on |\n|---|---|---|\n`identity` |\nOrganizations, users, teams, roles, permissions | none |\n`crm` |\nContacts, companies, relationships | identity |\n`pipeline` |\nDeals, stages, stage history | crm |\n`tasks` |\nProjects, tasks, dependencies | identity |\n`support` |\nTickets with priorities, SLAs, channels | crm |\n`comms` |\nThreads and messages for any entity | crm |\n`content` |\nFolders, documents, comments | identity |\n`billing` |\nProducts, prices, subscriptions, invoices, payments (Stripe-ready) | crm |\n`calendar` |\nEvents and attendees | identity |\n`automations` |\nTriggers, actions, execution logs | identity |\n`analytics` |\nTags, custom fields, activity log | identity |\n`forms` |\nForm definitions, fields, submissions, file uploads | identity |\n`notifications` |\nTemplates, delivery log, preferences, push tokens | identity |\n`campaigns` |\nEmail campaigns, segments, lists, engagement tracking | crm |\n`commerce` |\nOrders, carts, shipping, fulfillment | billing |\n`knowledge` |\nArticles, categories, publish status | content |\n`approvals` |\nApproval chains, requests, decisions, delegation | identity |\n`integrations` |\nConnected apps, OAuth tokens, webhooks, sync logs | identity |\n`compliance` |\nConsent records, deletion requests, retention policies | identity |\n\n**19 Skills. ~72 tables. All with RLS. All multi-tenant.**\n\n```\nidentity\n├── crm\n│   ├── pipeline\n│   ├── support\n│   ├── comms\n│   ├── billing\n│   │   └── commerce\n│   └── campaigns\n├── tasks\n├── content\n│   └── knowledge\n├── calendar\n├── automations\n├── analytics\n├── forms\n├── notifications\n├── approvals\n├── integrations\n└── compliance\n```\n\nEvery table gets:\n\n`id`\n\nuuid primary key`org_id`\n\nfor multi-tenant isolation`created_at`\n\n/`updated_at`\n\nwith automatic triggers`metadata`\n\njsonb escape hatch- Row Level Security enforced\n\nEvery skill with a status enum defines a lifecycle your app can track:\n\n| Lifecycle | Stages | Source |\n|---|---|---|\n| Contact | lead → prospect → customer → partner | `contact_type` enum |\n| Deal | per-pipeline custom stages | `pipeline_stages` table |\n| Ticket | open → pending → resolved → closed | `ticket_status` enum |\n| Subscription | trialing → active → past_due → canceled | `subscription_status` enum |\n| Task | todo → in_progress → in_review → done | `task_status` enum |\n| Invoice | draft → open → paid → void | `invoice_status` enum |\n| Document | draft → published → archived | `document_status` enum |\n\nSkene Skills follow the [Agent Skills](https://agentskills.io) open standard. Each skill includes a `SKILL.md`\n\nthat any AI coding agent can read -- Claude Code, Cursor, GitHub Copilot, Gemini CLI, and others.\n\nWhen you install via `npx skills add`\n\n, the SKILL.md files land in your agent's skills directory. Your agent gets full context: table schemas, column types, enums, RLS rules, and working SQL examples. No weeks of migration iteration.\n\nThe schema uses consistent patterns that AI agents understand immediately:\n\n- Every table has the same base columns (\n`id`\n\n,`org_id`\n\n,`created_at`\n\n,`updated_at`\n\n,`metadata`\n\n) - Postgres enums define clear state machines (\n`deal_status`\n\n,`ticket_status`\n\n,`task_status`\n\n) `COMMENT ON`\n\nannotations explain every table and non-obvious column- Each SKILL.md includes example queries an agent can reference\n- Dependency declarations so an agent knows what to keep or drop\n\n**Example prompts that work out of the box:**\n\nBuild me a CRM dashboard with Next.js. I have Skene Skills installed -- use the contacts, companies, and pipeline tables.\n\nCreate an API with Supabase Edge Functions for managing tickets. Include status transitions and SLA tracking.\n\nBuild a billing admin panel that shows MRR, active subscriptions, and outstanding invoices.\n\nAdd a customer portal where contacts can view their tickets, invoices, and upcoming events.\n\nThe SKILL.md gives the agent everything it needs: typed tables, clear relationships, sensible defaults, and enough structure to generate working code without ambiguity.\n\nMix and match Skills. Each combination is a product:\n\n```\nCRM            = identity + crm + pipeline + comms + analytics\nProject tool   = identity + tasks + content + calendar + analytics\nHelpdesk       = identity + crm + support + comms + content + knowledge + analytics\nBilling app    = identity + crm + billing + commerce + analytics\nMarketing      = identity + crm + campaigns + forms + analytics\nInternal wiki  = identity + content + knowledge\nFull business  = install all 19 skills\n```\n\nEvery Skill is optional except Identity. Dependencies resolve automatically.\n\n**Multi-tenant by default.** Every row belongs to an org. RLS enforces isolation automatically.\n\n**Enums for state machines.** `deal_status`\n\n, `ticket_status`\n\n, `task_status`\n\n, `subscription_status`\n\nare all Postgres enums. They define the lifecycle of every entity.\n\n**Polymorphic references.** Tables like `activities`\n\n, `comments`\n\n, `threads`\n\n, and `taggings`\n\nuse `entity_type`\n\n+ `entity_id`\n\nto reference any table. One activity log covers everything.\n\n**JSONB escape hatch.** The `metadata`\n\ncolumn on every table lets you store unstructured data without migrations. Use it for integrations, prototyping, or fields you haven't decided on yet.\n\n**Stripe-ready.** Nullable `stripe_*`\n\ncolumns on billing tables. Wire them up when you integrate Stripe. Ignore them until then. Partial unique indexes prevent duplicate Stripe IDs.\n\n**Immutable history.** `deal_stage_history`\n\nand `activities`\n\nare append-only audit logs. Pipeline analytics and compliance for free.\n\nSkene Skills is complete on its own. When you're ready for automation, [Skene Cloud](https://skene.ai) adds a journey engine that watches your tables for changes and triggers actions (emails, webhooks, analytics events) at each lifecycle transition. Connect your Supabase project, and it reads your enums and foreign keys to map lifecycles automatically.\n\nYour schema stays in your database. Disconnect at any time and keep everything. [Learn more →](https://skene.ai)\n\n```\ncrm/\n├── SKILL.md          # Schema docs, example queries, dependencies\n├── migration.sql     # Tables, enums, indexes, RLS policies\n├── seed.sql          # Realistic demo data\n└── manifest.json     # Metadata and dependency declarations\nnpx @skene/database-skills init\n```\n\nInstalls the package and configures your AI coding tools (Claude Code, Cursor, Windsurf, Copilot, Cline) so agents discover the skill automatically. Detects Supabase MCP and environment keys.\n\n```\nnpx @skene/database-skills crm --db $DATABASE_URL --seed\n```\n\nResolves dependencies, applies migrations. Run without args for interactive prompts. No `psql`\n\nrequired.\n\n```\n# Install all skills -- lands in .claude/skills/\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills\n\n# Install specific skills\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills -s crm\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills -s billing\n\n# Install globally (available in all projects)\nnpx skills add https://github.com/SkeneTechnologies/skene/tree/main/skills -g\n```\n\nYour AI agent reads the SKILL.md files for context, then applies the `migration.sql`\n\nto your Supabase project. Dependencies are declared in each skill's manifest.\n\n```\n# Set your Supabase database URL\nexport DATABASE_URL=\"postgresql://postgres:password@db.yourproject.supabase.co:5432/postgres\"\n\n# Install skills in dependency order\npsql \"$DATABASE_URL\" -f identity/migration.sql\npsql \"$DATABASE_URL\" -f crm/migration.sql\npsql \"$DATABASE_URL\" -f pipeline/migration.sql\n\n# Optional: load seed data\npsql \"$DATABASE_URL\" -f identity/seed.sql\npsql \"$DATABASE_URL\" -f crm/seed.sql\n```\n\nMigrations are additive -- they create new tables and enums in the `public`\n\nschema without touching existing tables.\n\n```\n-- Check RLS is enabled on all tables\nSELECT tablename, rowsecurity FROM pg_tables\nWHERE schemaname = 'public'\n  AND tablename NOT LIKE 'pg_%';\n\n-- List all enums\nSELECT t.typname, e.enumlabel\nFROM pg_type t\nJOIN pg_enum e ON t.oid = e.enumtypid\nORDER BY t.typname, e.enumsortorder;\n```\n\nThe `users`\n\ntable links to Supabase Auth via `auth_id`\n\n. Add this trigger to auto-create a user row on signup:\n\n``` bash\nCREATE OR REPLACE FUNCTION public.handle_new_user()\nRETURNS trigger AS $$\nBEGIN\n  INSERT INTO public.users (auth_id, email, full_name, org_id)\n  VALUES (\n    NEW.id,\n    NEW.email,\n    coalesce(NEW.raw_user_meta_data->>'full_name', NEW.email),\n    coalesce(\n      (NEW.raw_user_meta_data->>'org_id')::uuid,\n      (SELECT id FROM public.organizations LIMIT 1)\n    )\n  );\n  RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER;\n\nCREATE TRIGGER on_auth_user_created\n  AFTER INSERT ON auth.users\n  FOR EACH ROW EXECUTE FUNCTION public.handle_new_user();\n```\n\n| Salesforce/HubSpot | Skene Skills | |\n|---|---|---|\nData ownership |\nTheir servers, their rules, their API limits | Your Supabase project, your Postgres, your data |\nAI/ML access |\nRestricted. Salesforce prohibits using Slack data for LLM training. Meta blocks third-party AI on WhatsApp Business data | Full access. Train models, build features, pipe into any tool |\nTerms stability |\nCan change terms to restrict AI use, export, or integrations at any time | MIT licensed. Terms never change |\nPricing |\nPer-seat. $25-300/user/month | Supabase pricing. $25/month for most projects |\nCustomization |\nPoint-and-click config, proprietary scripting | Raw SQL. Extend with Edge Functions, Realtime, Storage |\nVendor lock-in |\nYears of migration work to leave | `pg_dump` and you're done |\nSchema access |\nAbstracted behind proprietary ORM | Direct Postgres. Every tool in the ecosystem works |\nOpen source |\nNo | Yes. MIT licensed. Fork it, modify it, ship it |\n\n**What are Skills?**\nSkills are composable backend capabilities that follow the [Agent Skills](https://agentskills.io) open standard. Each skill is a self-contained set of tables, enums, RLS policies, and seed data packaged with a SKILL.md that any AI agent can read. Install via [skills.sh](https://skills.sh) or apply the SQL directly.\n\n**Do I need a CLI?**\nNo. Run `npx @skene/database-skills init`\n\nto set everything up. Your AI agent handles the rest via Supabase MCP. Or run the `migration.sql`\n\nfiles directly with `psql`\n\n. No build step, no runtime.\n\n**Do I need psql?**\nNo. The setup wizard (`npx @skene/database-skills`\n\n) connects directly to your database using Node.js. `psql`\n\nis only needed if you prefer to run migration files manually.\n\n**Can I install just one skill?**\nYes. Only `identity`\n\nis required as a base. Everything else is optional. Dependencies are declared in each skill's `manifest.json`\n\n.\n\n**Why not EAV (Entity-Attribute-Value)?**\nReal typed tables for the 80% case. JSONB `metadata`\n\ncolumn plus `custom_field_definitions`\n\n/ `custom_field_values`\n\nfor the 20%. Query performance and type safety where it matters, flexibility where you need it.\n\n**What about the UI?**\nSkene Skills is the backend. Pair with any frontend framework, admin panel builder, or let an AI coding agent build the UI. The tables are designed to be straightforward to query from any client.\n\n**Does this work without Skene Cloud?**\nYes, 100% standalone. No dependencies on Skene services. Skene Cloud adds automation and journey tracking, but Skene Skills is a complete backend on its own.\n\n**Can I modify a skill after installing?**\nYes. It's just SQL in your Supabase project. No ORM, no code generation, no lock-in.\n\n**Does this work without Supabase?**\nThe SQL is standard PostgreSQL. RLS policies and `auth.uid()`\n\nare Supabase-specific, but you can replace `auth.uid()`\n\nwith your own auth layer.\n\nPRs welcome. Each Skill needs:\n\n`SKILL.md`\n\n-- schema docs, example queries, dependency list (follows the[Agent Skills](https://agentskills.io)standard)`migration.sql`\n\n-- tables, enums, indexes, RLS policies`seed.sql`\n\n-- realistic demo data`manifest.json`\n\n-- metadata and dependency declarations\n\nSchema conventions:\n\n- Base columns on every table (\n`id`\n\n,`org_id`\n\n,`created_at`\n\n,`updated_at`\n\n,`metadata`\n\n) - Postgres enums for status/type fields\n`COMMENT ON`\n\nfor tables and non-obvious columns- Indexes on\n`org_id`\n\nand frequently filtered columns - RLS policies scoped to\n`get_user_org_id()`\n\nMIT\n\nBuilt by [Skene](https://skene.ai)", "url": "https://wpnews.pro/news/supabase-skills-to-run-your-business-ops", "canonical_source": "https://github.com/SkeneTechnologies/skene/tree/main/skills", "published_at": "2026-06-05 07:28:59+00:00", "updated_at": "2026-06-05 07:47:47.862790+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-startups", "ai-infrastructure", "ai-products"], "entities": ["Supabase", "Salesforce", "HubSpot", "Jira", "Zendesk", "Stripe", "Cursor", "Claude Code"], "alternates": {"html": "https://wpnews.pro/news/supabase-skills-to-run-your-business-ops", "markdown": "https://wpnews.pro/news/supabase-skills-to-run-your-business-ops.md", "text": "https://wpnews.pro/news/supabase-skills-to-run-your-business-ops.txt", "jsonld": "https://wpnews.pro/news/supabase-skills-to-run-your-business-ops.jsonld"}}