lemon-squeezy
You are an expert in Lemon Squeezy, the all-in-one payments platform that acts as your Merchant of Record. You help developers sell software, subscriptions, and digital products with automatic global tax handling (VAT, sales tax), invoicing, license keys, customer portal, and fraud protection — without needing to register for tax IDs or handle payment compliance yourself.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o lemon-squeezy.zip https://jpskill.com/download/15065.zip && unzip -o lemon-squeezy.zip && rm lemon-squeezy.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15065.zip -OutFile "$d\lemon-squeezy.zip"; Expand-Archive "$d\lemon-squeezy.zip" -DestinationPath $d -Force; ri "$d\lemon-squeezy.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
lemon-squeezy.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
lemon-squeezyフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Claude が読む原文 SKILL.md(中身を展開)
この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。
Lemon Squeezy — Merchant of Record for SaaS
You are an expert in Lemon Squeezy, the all-in-one payments platform that acts as your Merchant of Record. You help developers sell software, subscriptions, and digital products with automatic global tax handling (VAT, sales tax), invoicing, license keys, customer portal, and fraud protection — without needing to register for tax IDs or handle payment compliance yourself.
Core Capabilities
Checkout and Products
import { lemonSqueezySetup, createCheckout, getProduct, listProducts } from "@lemonsqueezy/lemonsqueezy.js";
lemonSqueezySetup({ apiKey: process.env.LEMON_SQUEEZY_API_KEY! });
// Create checkout session
async function createProCheckout(userId: string, email: string) {
const checkout = await createCheckout(process.env.LEMON_SQUEEZY_STORE_ID!, {
variantId: process.env.PRO_VARIANT_ID!,
checkoutData: {
email,
custom: { user_id: userId }, // Your metadata
},
checkoutOptions: {
dark: true,
successUrl: "https://myapp.com/billing/success",
},
productOptions: {
enabledVariants: [process.env.PRO_VARIANT_ID!],
},
});
return checkout.data.attributes.url; // Redirect user here
}
// List products
const products = await listProducts({ filter: { storeId: process.env.STORE_ID! } });
products.data.forEach(p => {
console.log(`${p.attributes.name}: $${p.attributes.price / 100}`);
});
Webhooks
import crypto from "crypto";
app.post("/api/webhooks/lemonsqueezy", async (req, res) => {
// Verify signature
const signature = req.headers["x-signature"] as string;
const hash = crypto.createHmac("sha256", process.env.LEMON_SQUEEZY_WEBHOOK_SECRET!)
.update(JSON.stringify(req.body)).digest("hex");
if (signature !== hash) return res.status(401).json({ error: "Invalid signature" });
const { event_name, data } = req.body.meta;
switch (event_name) {
case "subscription_created": {
const { customer_id, variant_id, status } = data.attributes;
const userId = data.attributes.custom_data?.user_id;
await db.users.update(userId, {
plan: "pro",
lemonCustomerId: customer_id,
lemonSubscriptionId: data.id,
subscriptionStatus: status,
});
break;
}
case "subscription_updated": {
const userId = data.attributes.custom_data?.user_id;
await db.users.update(userId, { subscriptionStatus: data.attributes.status });
break;
}
case "subscription_cancelled": {
const userId = data.attributes.custom_data?.user_id;
await db.users.update(userId, {
subscriptionStatus: "cancelled",
cancelAt: data.attributes.ends_at,
});
break;
}
case "license_key_created": {
await db.licenses.create({
key: data.attributes.key,
userId: data.attributes.custom_data?.user_id,
activationLimit: data.attributes.activation_limit,
});
break;
}
}
res.json({ received: true });
});
License Key Validation
import { validateLicense, activateLicense } from "@lemonsqueezy/lemonsqueezy.js";
// In your desktop app / CLI
async function checkLicense(licenseKey: string) {
const validation = await validateLicense(licenseKey);
if (validation.data.attributes.valid) {
console.log("License valid!");
console.log(`Customer: ${validation.data.attributes.customer_name}`);
console.log(`Activations: ${validation.data.attributes.activation_usage}/${validation.data.attributes.activation_limit}`);
return true;
}
return false;
}
// Activate on this device
async function activate(licenseKey: string) {
const activation = await activateLicense(licenseKey, `${os.hostname()}-${os.platform()}`);
return activation.data.attributes.activated;
}
Installation
npm install @lemonsqueezy/lemonsqueezy.js
Best Practices
- Merchant of Record — Lemon Squeezy handles VAT, sales tax, invoicing globally; you're not the seller of record
- No tax IDs needed — They collect and remit taxes in 100+ countries; you just receive payouts
- Webhooks for state — Don't rely on checkout redirect; use webhooks for subscription lifecycle
- Custom data — Pass
user_idincustomfield; link Lemon Squeezy customers to your users - License keys — Enable for desktop apps, CLI tools, self-hosted software; activation limits prevent sharing
- Customer portal — Hosted portal for subscription management; customers update payment, cancel, view invoices
- Variant-based pricing — Create price variants (monthly/yearly, tiers); one product, multiple pricing options
- Test mode — Use test mode API key for development; test the full flow without real charges