Skip to content

gengirish/skillstore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SkillStore — AI Skill Marketplace for Claude Code & Cursor

BuildwithAiGiri MVP #4 by Girish B. Hiremath | IntelliForge AI

SkillStore is a SaaS MCP (Model Context Protocol) server that lets developers discover, install, and share AI skills (SKILL.md files) directly from Claude Code and Cursor. Add one line to your config and search 1,200+ skills without leaving your editor.


Architecture

┌─────────────────────────────────────────────────────────┐
│                     Developer's Editor                   │
│             (Claude Code / Cursor)                       │
└──────────────────────┬──────────────────────────────────┘
                       │ MCP stdio
                       ▼
┌─────────────────────────────────────────────────────────┐
│              skillstore-mcp (npm package)                │
│         Runs locally via npx skillstore-mcp             │
│         Fly.io: skillstore-mcp.fly.dev                  │
└──────────────────────┬──────────────────────────────────┘
                       │ REST API (HTTPS)
                       ▼
┌─────────────────────────────────────────────────────────┐
│          SkillStore Web API (Next.js 14)                 │
│          Vercel: skillstore.intelliforge.tech            │
│                                                          │
│  /api/skills           — search & create skills         │
│  /api/skills/[id]      — get / update / delete          │
│  /api/skills/trending  — trending by period             │
│  /api/skills/mine      — authenticated user's skills    │
│  /api/categories       — category list                  │
│  /api/stripe/checkout  — create Stripe session          │
│  /api/stripe/webhook   — Stripe event handler           │
│  /api/mcp-keys         — API key management             │
└──────────────────────┬──────────────────────────────────┘
                       │ Supabase client
                       ▼
┌─────────────────────────────────────────────────────────┐
│               Supabase (Postgres + Auth)                 │
│  Tables: profiles, skills, skill_versions,              │
│          api_usage, skill_upvotes                       │
│  Auth: GitHub OAuth                                     │
│  RLS: per-table row-level security policies             │
└─────────────────────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────┐
│                    Stripe                                │
│  Products: Pro ($12/mo), Enterprise ($49/mo)            │
│  Webhooks: checkout.session.completed,                  │
│            customer.subscription.deleted                │
└─────────────────────────────────────────────────────────┘

3-Tier Pricing

Feature Free ($0) Pro ($12/mo) Enterprise ($49/mo)
MCP tool calls 50/day Unlimited Unlimited
Private skills 0 25 Unlimited
Submit skills 1 public Unlimited Unlimited + team
Analytics No Yes Advanced
Version history No Yes Yes
Team members 1 1 20
Support Community Email Priority + SLA
Custom endpoint No No Yes

MCP Quickstart

Claude Code

Add to ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "skillstore": {
      "command": "npx",
      "args": ["-y", "skillstore-mcp"],
      "env": {
        "SKILLSTORE_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project root:

{
  "skillstore": {
    "command": "npx",
    "args": ["-y", "skillstore-mcp"],
    "env": {
      "SKILLSTORE_API_KEY": "YOUR_API_KEY_HERE"
    }
  }
}

Get your API key at: https://skillstore.intelliforge.tech/dashboard

Available MCP Tools

Tool Description
search_skills Search by query, category, or tags
get_skill Get full skill details + SKILL.md content
list_categories Browse all categories with counts
get_trending Top skills by day / week / month
submit_skill Submit a new skill (Pro+ for unlimited)
get_my_skills List your public + private skills

Local Development

Prerequisites

  • Node.js 22+
  • Supabase account (free tier works)
  • Stripe account (test mode)

1. Clone & Install

git clone https://github.com/intelliforge-ai/skillstore
cd skillstore

# Web app
cd web && npm install

# MCP server
cd ../mcp-server && npm install

2. Configure Environment

cd web
cp .env.example .env.local
# Fill in your values (see Supabase + Stripe setup below)

3. Run Development Servers

# Terminal 1: Web app
cd web && npm run dev
# → http://localhost:3000

# Terminal 2: MCP server (for local testing)
cd mcp-server && SKILLSTORE_API_URL=http://localhost:3000/api SKILLSTORE_API_KEY=your_key npm run dev

Supabase Setup

  1. Create a new Supabase project at https://supabase.com

  2. Run the schema:

    # In Supabase SQL editor, paste contents of:
    supabase/schema.sql
  3. Enable GitHub OAuth:

    • Supabase Dashboard → Authentication → Providers → GitHub
    • Create a GitHub OAuth App at https://github.com/settings/developers
    • Callback URL: https://YOUR_PROJECT.supabase.co/auth/v1/callback
  4. Copy credentials to .env.local:

    NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
    NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJxxx...
    SUPABASE_SERVICE_ROLE_KEY=eyJxxx...
    

Stripe Setup

  1. Create a Stripe account at https://stripe.com

  2. Create products and prices:

    Product: SkillStore Pro
    Price: $12.00/month (recurring)
    → Copy the Price ID: price_xxx
    
    Product: SkillStore Enterprise
    Price: $49.00/month (recurring)
    → Copy the Price ID: price_xxx
    
  3. Set up webhook:

    • Stripe Dashboard → Developers → Webhooks → Add endpoint
    • URL: https://skillstore.intelliforge.tech/api/stripe/webhook
    • Events: checkout.session.completed, customer.subscription.deleted, customer.subscription.updated
    • Copy Webhook Secret: whsec_xxx
  4. Add to .env.local:

    STRIPE_SECRET_KEY=sk_live_xxx
    STRIPE_WEBHOOK_SECRET=whsec_xxx
    STRIPE_PRO_PRICE_ID=price_xxx
    STRIPE_ENTERPRISE_PRICE_ID=price_xxx
    

    For local testing with Stripe CLI:

    stripe listen --forward-to localhost:3000/api/stripe/webhook

Fly.io Deployment (MCP Server)

cd mcp-server

# Install Fly CLI
curl -L https://fly.io/install.sh | sh

# Authenticate
fly auth login

# Create the app (first time only)
fly launch --name skillstore-mcp --region sin

# Set secrets
fly secrets set \
  SKILLSTORE_API_URL=https://skillstore.intelliforge.tech/api \
  NODE_ENV=production

# Deploy
fly deploy

# Check status
fly status
fly logs

The MCP server is a stdio-based process — it starts on demand via npx skillstore-mcp on the developer's machine. The Fly.io deployment is for the HTTP-based MCP transport (optional, for enterprise custom endpoints).


Vercel Deployment (Web App)

cd web

# Install Vercel CLI
npm i -g vercel

# Deploy (first time: follow prompts)
vercel

# Deploy to production
vercel --prod

# Set environment variables in Vercel dashboard:
# https://vercel.com/your-team/skillstore/settings/environment-variables

Required environment variables in Vercel:

  • NEXT_PUBLIC_SUPABASE_URL
  • NEXT_PUBLIC_SUPABASE_ANON_KEY
  • SUPABASE_SERVICE_ROLE_KEY
  • STRIPE_SECRET_KEY
  • STRIPE_WEBHOOK_SECRET
  • STRIPE_PRO_PRICE_ID
  • STRIPE_ENTERPRISE_PRICE_ID
  • NEXT_PUBLIC_SITE_URL

Project Structure

skillstore/
├── mcp-server/                # Fly.io MCP server
│   ├── src/
│   │   └── index.ts           # MCP server with 6 tools
│   ├── Dockerfile
│   ├── fly.toml
│   ├── package.json
│   └── tsconfig.json
├── web/                       # Vercel Next.js 14 app
│   ├── src/
│   │   ├── app/
│   │   │   ├── layout.tsx     # Root layout + Navbar + Footer
│   │   │   ├── page.tsx       # Landing page
│   │   │   ├── globals.css    # Dark cyberpunk theme
│   │   │   ├── pricing/
│   │   │   │   └── page.tsx   # Pricing + comparison table
│   │   │   └── api/
│   │   │       ├── skills/
│   │   │       │   ├── route.ts         # GET search, POST create
│   │   │       │   ├── [id]/route.ts    # GET, PATCH, DELETE
│   │   │       │   ├── trending/route.ts
│   │   │       │   └── mine/route.ts
│   │   │       ├── categories/route.ts
│   │   │       ├── stripe/
│   │   │       │   ├── checkout/route.ts
│   │   │       │   └── webhook/route.ts
│   │   │       └── mcp-keys/route.ts
│   │   └── lib/
│   │       ├── supabase.ts    # DB clients + validateApiKey
│   │       └── stripe.ts      # Stripe client + PLANS
│   └── .env.example
├── supabase/
│   └── schema.sql             # Full DB schema + RLS + triggers
├── .cursorrules               # AI coding rules for this project
└── README.md

Contributing

  1. Fork the repo
  2. Create a feature branch: git checkout -b feat/your-feature
  3. Follow conventions in .cursorrules
  4. Open a PR with description

About

SkillStore is built by Girish B. Hiremath as part of the BuildwithAiGiri series — a collection of AI-native SaaS MVPs shipped fast.

© 2025 IntelliForge AI. All rights reserved.

About

BuildwithAiGiri MVP #4 — AI Skill Marketplace MCP Server. Discover, share & install AI skills directly from Claude Code & Cursor. 3-tier SaaS (Free/Pro/Enterprise). Built with Next.js 14 + TypeScript + Supabase + Stripe + Fly.io.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors