Selling on mog

How to publish and sell skill packages on mog.md — Stripe onboarding, uploads, publishing, pricing, and analytics.

Anyone can sell on mog.md. You set the price, we handle payments via Stripe Connect, and you get paid. mog takes a 10% platform fee on paid packages; free packages have no fees.

Overview

  1. Sign in to mog.md with GitHub or Google
  2. Create a vendor profile — choose your vendor slug (used in package names)
  3. Connect Stripe — complete Stripe Connect onboarding to receive payouts
  4. Upload a release — zip your package and upload it
  5. Wait for the scan — automated security scan runs (usually under 30s)
  6. Publish — make your listing live in the marketplace

Creating a vendor profile

Visit the Seller Dashboard and create your vendor profile. Your vendor slug becomes the namespace for all your packages:

# If your vendor slug is "acme":
acme/router-eval
acme/react-testing-skill
acme/typescript-rules

Vendor slug rules

  • 2–32 characters
  • Lowercase letters, numbers, and hyphens only
  • Must be unique across the marketplace
  • Cannot be changed after creation (choose carefully)

Stripe Connect onboarding

To receive payouts for paid packages, you need to complete Stripe Connect onboarding. From the seller dashboard, click Connect Stripe. You'll be redirected to Stripe to provide your business or personal details.

Stripe handles:

  • Identity verification (KYC)
  • Bank account or debit card for payouts
  • Tax forms (1099 in the US)

Creating a package

# 1. Create your package directory
mkdir my-skill && cd my-skill
 
# 2. Write your content
cat > content/SKILL.md << 'EOF'
# My Skill
...
EOF
 
# 3. Write the manifest
cat > mog.yaml << 'EOF'
name: acme/my-skill
version: 1.0.0
type: skill
description: "A helpful skill for..."
targets:
  - cursor
  - claude-code
license: MIT
EOF
 
# 4. Write a README (shown on listing page)
echo "# My Skill\n\nDescription..." > README.md
 
# 5. Zip it up
cd ..
zip -r my-skill-1.0.0.zip my-skill/

Uploading a release

From the Seller Dashboard, drag and drop your .zip file, or use the API directly:

curl -X POST https://api.mog.md/v1/vendor/releases \
  -H "Authorization: Bearer <token>" \
  -F "archive=@my-skill-1.0.0.zip"

The scan pipeline

StatusMeaning
pendingUpload received, scan not yet started
scanningScan in progress
passedScan passed — release can be published
failedScan found issues — details shown in dashboard

Publishing a release

Once the scan passes, publish via the dashboard or via API:

curl -X PATCH https://api.mog.md/v1/vendor/releases/<release-id>/publish \
  -H "Authorization: Bearer <token>"

Updating listing metadata

curl -X PATCH https://api.mog.md/v1/vendor/listings/<listing-id> \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Updated Skill Title",
    "description": "Updated description...",
    "tags": ["react", "testing", "rtl"],
    "priceCents": 500,
    "readmeMd": "# My Skill\n\nUpdated README content..."
  }'

Pricing

priceCentsDisplay price
0Free
99$0.99
500$5.00
1000$10.00
4900$49.00

mog charges a 10% platform fee. A $5.00 package earns you $4.50 per sale.

Analytics

GET https://api.mog.md/v1/vendor/analytics
Authorization: Bearer <token>

Versioning best practices

  • Patch (1.0.0 → 1.0.1): Bug fixes, typos
  • Minor (1.0.0 → 1.1.0): New sections, expanded content — backwards compatible
  • Major (1.0.0 → 2.0.0): Breaking changes, major rewrites

FAQs

Can I publish free packages without connecting Stripe?

Yes. Stripe Connect is only required for paid packages.

Can I change my price after publishing?

Yes. You can update priceCents at any time. The new price applies immediately to new purchases; existing entitlements are not affected.

Can I take a package down?

Yes. You can change a listing's status to unlisted to hide it from search while keeping it accessible to existing buyers.

What happens if my scan fails?

The release stays in failed status and cannot be published. Fix the issues and upload a new release.