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
- Sign in to mog.md with GitHub or Google
- Create a vendor profile — choose your vendor slug (used in package names)
- Connect Stripe — complete Stripe Connect onboarding to receive payouts
- Upload a release — zip your package and upload it
- Wait for the scan — automated security scan runs (usually under 30s)
- 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
| Status | Meaning |
|---|---|
pending | Upload received, scan not yet started |
scanning | Scan in progress |
passed | Scan passed — release can be published |
failed | Scan 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
| priceCents | Display price |
|---|---|
0 | Free |
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.