Yalidine Delivery Integration
bighadj22/codflow
Wires an app to the Yalidine (Guepex) Algerian courier API: parcels, zone lookups, delivery fees and verified delivery-status webhooks.
Add Polar billing to a TypeScript/JavaScript app using the @polar-sh/sdk package.
$ npx skills add chmonitor/chmonitor --skill polar-integration -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install chmonitor/chmonitor polar-integration --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/polar-integration .claude/skills/polar-integration && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .claude/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integrationType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add chmonitor/chmonitor --skill polar-integration -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install chmonitor/chmonitor polar-integration --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/polar-integration .agents/skills/polar-integration && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .agents/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chmonitor/chmonitor --skill polar-integration -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install chmonitor/chmonitor polar-integration --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/polar-integration .cursor/skills/polar-integration && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .cursor/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/chmonitor/chmonitor.git --path .agents/skills/polar-integration--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add chmonitor/chmonitor --skill polar-integration -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install chmonitor/chmonitor polar-integration --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/polar-integration .gemini/skills/polar-integration && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .gemini/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install chmonitor/chmonitor polar-integrationInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add chmonitor/chmonitor --skill polar-integration -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/polar-integration .github/skills/polar-integration && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .github/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add chmonitor/chmonitor --skill polar-integration -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install chmonitor/chmonitor polar-integration --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/chmonitor/chmonitor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/polar-integration .opencode/skills/polar-integration && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "polar-integration" agent skill from https://github.com/chmonitor/chmonitor/tree/main/.agents/skills/polar-integration into .opencode/skills/polar-integration/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "polar-integration", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
polar-integrationAdd Polar billing to a TypeScript/JavaScript app using the @polar-sh/sdk package.
Polar Integration is an agent skill from chmonitor/chmonitor. Add Polar billing to a TypeScript/JavaScript app using the @polar-sh/sdk package. Use this skill whenever the user wants to add a Checkout endpoint, a Customer Portal endpoint, or a Webhooks endpoint for Polar to any framework — Next.js, Express, Hono, Astro, SvelteKit, Remix, TanStack Start, Nuxt, Fastify, Elysia, Deno, Supabase Edge Functions, Cloudflare Workers, Bun, etc.
Its SKILL.md is about 4.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Data & Analytics, covering DataFrames and Webhooks. It works with Hono, Next.js, Deno and Cloudflare Workers. The repository describes itself as: Open-source operational advisor for ClickHouse — real-time monitoring plus AI-driven index/partition/materialized-view recommendations. The licence is GPL-3.0.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit fc39ef0. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
polar.shFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
POLAR_ACCESS_TOKENPOLAR_WEBHOOK_SECRETWEBHOOK_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Polar Integration loads about 4.3k tokens when it runs. Until then it costs about 99 tokens; SKILL.md has 1,193 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from chmonitor/chmonitor at commit fc39ef0, republished under its GPL-3.0 licence (© chmonitor). 1,193 words, ~4,294 tokens.
.claude/skills/polar-integration/SKILL.md (or your agent's skills folder).A standalone guide to wiring up Polar's three core HTTP endpoints — Checkout, Customer Portal, and Webhooks — using @polar-sh/sdk directly. The recipes are framework-agnostic Web Standards (Request/Response); each section also lists the small idiomatic adjustments per framework.
Install the SDK:
npm install @polar-sh/sdk
# or pnpm / yarn / bunDon't install @polar-sh/<framework> packages (e.g. @polar-sh/nextjs, @polar-sh/express, @polar-sh/hono, etc.) — they are deprecated. @polar-sh/sdk is all you need for these recipes.
Required environment variables (use whatever loader your framework provides — process.env, Deno.env, import.meta.env, etc.):
POLAR_ACCESS_TOKEN — organization access token from the Polar dashboard.POLAR_WEBHOOK_SECRET — only needed for the webhook recipe.POLAR_SERVER — set to sandbox while developing, omit (or production) in prod.Construct one client and reuse it:
import { Polar } from "@polar-sh/sdk";
const polar = new Polar({
accessToken: process.env.POLAR_ACCESS_TOKEN,
server: (process.env.POLAR_SERVER as "sandbox" | "production") ?? "production",
});The three recipes below are independent — implement only the ones the user asks for.
Goal: an HTTP endpoint that creates a Polar checkout session and 302-redirects the browser to the hosted checkout page.
Underlying API: POST /v1/checkouts/ (SDK: polar.checkouts.create(...)). Full schema: https://polar.sh/docs/api-reference/checkouts/create-session.
polar.checkouts.create() field referenceThe SDK uses camelCase; the underlying HTTP API uses snake_case. Pick whichever you see in the user's existing code.
| SDK field (camelCase) | API field (snake_case) | Required | Notes |
|---|---|---|---|
products | products | yes | Array of product UUIDs. The first is selected by default. |
customerId | customer_id | no | Existing Polar customer ID. |
externalCustomerId | external_customer_id | no | Your own user ID. If no Polar customer matches, one is created with this external ID. |
customerEmail | customer_email | no | |
customerName | customer_name | no | |
customerBillingName | customer_billing_name | no | |
customerBillingAddress | customer_billing_address | no | { country: "US", line1, line2, city, state, postal_code }. country (ISO alpha-2) is required if address is set. |
customerTaxId | customer_tax_id | no | |
customerIpAddress | customer_ip_address | no | |
customerMetadata | customer_metadata | no | Copied to the created customer. |
isBusinessCustomer | is_business_customer | no | Default false. If true, full billing address + name required. |
metadata | metadata | no | Copied to the resulting order/subscription. |
customFieldData | custom_field_data | no | Map of custom field slug → value. |
discountId | discount_id | no | |
allowDiscountCodes | allow_discount_codes | no | Default true. |
requireBillingAddress | require_billing_address | no | Default false. US customers always required regardless. |
seats | seats | no | Predefined number of seats (seat-based pricing only). |
minSeats / maxSeats | min_seats / max_seats | no | Seat-based pricing only. |
amount | amount | no | Cents. Only used for custom (pay-what-you-want) prices. |
subscriptionId | subscription_id | no | Upgrade an existing free subscription. |
successUrl | success_url | no | See below. |
returnUrl | return_url | no | Back-button URL on the checkout page. |
embedOrigin | embed_origin | no | Set when embedding the checkout in an iframe. |
locale | locale | no | IETF BCP 47 (en, en-US, fr-CA, ...). Defaults to en-US. |
currency | currency | no | ISO 4217 (e.g. usd, eur). |
trialInterval / trialIntervalCount | trial_interval / trial_interval_count | no | Override product trial. |
allowTrial | allow_trial | no | Default true. Set false to disable an otherwise-configured trial. |
prices | prices | no | Map of product ID → ad-hoc prices (override catalog prices). |
Response: { id, url, client_secret, expires_at, status, ... }. Redirect the user to url. client_secret is only needed if you are embedding the checkout via @polar-sh/checkout.
successUrl and {CHECKOUT_ID}. Polar performs a literal string substitution: any {CHECKOUT_ID} token in the URL is replaced with the actual session ID at redirect time. The official API docs example uses ?checkout_id={CHECKOUT_ID}; you can use any param name you want. Useful when your success page needs to fetch the session via polar.checkouts.get(checkoutId).theme (UI hint, not an API field). The hosted checkout UI accepts ?theme=light|dark in the URL. To apply a theme, append it to result.url after creating the session — it's not a field on polar.checkouts.create().Works as-is in Deno, Bun, Cloudflare Workers, Supabase Edge Functions, SvelteKit, Remix, TanStack Start, Astro endpoints, and Next.js Route Handlers (NextRequest extends Request).
import { Polar } from "@polar-sh/sdk";
const polar = new Polar({
accessToken: process.env.POLAR_ACCESS_TOKEN,
server: "production",
});
const SUCCESS_URL = "https://example.com/success?checkoutId={CHECKOUT_ID}";
const THEME: "light" | "dark" | undefined = undefined;
export async function GET(request: Request): Promise<Response> {
const url = new URL(request.url);
const products = url.searchParams.getAll("products");
if (products.length === 0) {
return Response.json(
{ error: "Missing products in query params" },
{ status: 400 },
);
}
const json = (key: string) =>
url.searchParams.has(key)
? JSON.parse(url.searchParams.get(key) ?? "{}")
: undefined;
const str = (key: string) => url.searchParams.get(key) ?? undefined;
try {
const result = await polar.checkouts.create({
products,
successUrl: SUCCESS_URL,
customerId: str("customerId"),
externalCustomerId: str("customerExternalId"),
customerEmail: str("customerEmail"),
customerName: str("customerName"),
customerBillingAddress: json("customerBillingAddress"),
customerTaxId: str("customerTaxId"),
customerIpAddress: str("customerIpAddress"),
customerMetadata: json("customerMetadata"),
metadata: json("metadata"),
discountId: str("discountId"),
allowDiscountCodes: url.searchParams.has("allowDiscountCodes")
? url.searchParams.get("allowDiscountCodes") === "true"
: undefined,
seats: url.searchParams.has("seats")
? Number.parseInt(url.searchParams.get("seats") ?? "1", 10)
: undefined,
});
const redirectUrl = new URL(result.url);
if (THEME) redirectUrl.searchParams.set("theme", THEME);
return Response.redirect(redirectUrl.toString(), 302);
} catch (error) {
console.error(error);
return new Response(null, { status: 500 });
}
}This handler accepts a GET request with ?products=<product_id> and forwards optional customer-prefill params straight to polar.checkouts.create(). Drop fields the caller won't ever provide; add fields from the table above (metadata, embedOrigin, locale, ...) as needed for your use case. If your frontend is server-rendered and already knows the user, hardcode externalCustomerId from your auth context instead of reading it from the query.
The body of the handler is identical — only the signature, URL access, and response constructors change.
Next.js (App Router): put the canonical handler in app/api/checkout/route.ts. NextRequest/NextResponse are optional; request: Request works.
Express:
import type { Request, Response } from "express";
app.get("/checkout", async (req: Request, res: Response) => {
const url = new URL(`${req.protocol}://${req.get("host")}${req.originalUrl}`);
// ... same body using `url.searchParams` ...
// res.redirect(redirectUrl.toString());
// res.status(400).json({ error: "..." });
});Fastify:
fastify.get("/checkout", async (request, reply) => {
const url = new URL(`${request.protocol}://${request.hostname}${request.url}`);
// ... same body ...
// reply.redirect(redirectUrl.toString());
});Hono:
app.get("/checkout", async (c) => {
const url = new URL(c.req.url);
// ... same body ...
return c.redirect(redirectUrl.toString());
});Elysia:
app.get("/checkout", ({ request, redirect }) => {
const url = new URL(request.url);
// ... same body, `return redirect(redirectUrl.toString())` ...
});Nuxt (server route): server/api/checkout.get.ts using defineEventHandler, getQuery, sendRedirect(event, url, 302).
SvelteKit: src/routes/api/checkout/+server.ts exporting GET({ request, url }) — the canonical handler works directly.
Astro: src/pages/api/checkout.ts exporting export const GET: APIRoute = async ({ request }) => { ... }.
Goal: an authenticated endpoint that creates a Polar customer session and 302-redirects to the hosted customer portal (subscriptions, invoices, payment methods).
Underlying API: POST /v1/customer-sessions/ (SDK: polar.customerSessions.create(...)). Full schema: https://polar.sh/docs/api-reference/customer-portal/sessions/create.
polar.customerSessions.create() field referenceThe request body is a union — pass either customerId or externalCustomerId, not both.
| SDK field | API field | Required | Notes |
|---|---|---|---|
customerId | customer_id | one of these two | Existing Polar customer UUID. |
externalCustomerId | external_customer_id | one of these two | Your own user ID. |
returnUrl | return_url | no | Back-button URL on the portal page. |
memberId | member_id | no | Only for orgs with member_model_enabled. Polar customer member UUID. Defaults to the owner member for individual customers. |
externalMemberId | external_member_id | no | Your member ID, alternative to memberId. |
Response: { id, customer_portal_url, token, expires_at, customer, customer_id, return_url, ... }. Redirect the user to customer_portal_url. token and customer are useful if you want to render portal data inside your own UI instead of redirecting.
import { Polar } from "@polar-sh/sdk";
const polar = new Polar({
accessToken: process.env.POLAR_ACCESS_TOKEN,
server: "production",
});
const RETURN_URL = "https://example.com/account";
// Replace with your auth: read a cookie/JWT/session and return your user id.
async function getExternalCustomerId(request: Request): Promise<string | null> {
const session = await getSession(request); // your auth helper
return session?.userId ?? null;
}
export async function GET(request: Request): Promise<Response> {
const externalCustomerId = await getExternalCustomerId(request);
if (!externalCustomerId) {
return Response.json({ error: "Unauthorized" }, { status: 401 });
}
try {
const { customerPortalUrl } = await polar.customerSessions.create({
externalCustomerId,
returnUrl: RETURN_URL,
});
return Response.redirect(customerPortalUrl, 302);
} catch (error) {
console.error(error);
return new Response(null, { status: 500 });
}
}If you have a Polar customer ID instead of your own user ID, swap externalCustomerId for customerId in the polar.customerSessions.create({ ... }) call. externalCustomerId is usually what you want — your auth system already knows the user's ID.
Same shape as Checkout — only the request/response idioms change. Read auth state however your framework expects (Next.js: cookies() from next/headers, Express: req.user, Hono: c.get('user'), etc.) and pass the result into polar.customerSessions.create.
Goal: receive Polar webhook events, verify the signature, and dispatch to per-event handlers.
Contract: POST endpoint at a stable URL configured in the Polar dashboard. Verifies the webhook-id, webhook-timestamp, webhook-signature headers using validateEvent from @polar-sh/sdk/webhooks. Returns 200 on success, 403 on signature mismatch.
import { validateEvent, WebhookVerificationError } from "@polar-sh/sdk/webhooks";
const WEBHOOK_SECRET = process.env.POLAR_WEBHOOK_SECRET!;
export async function POST(request: Request): Promise<Response> {
const body = await request.text(); // must be the raw body, not parsed JSON
let event: ReturnType<typeof validateEvent>;
try {
event = validateEvent(
body,
{
"webhook-id": request.headers.get("webhook-id") ?? "",
"webhook-timestamp": request.headers.get("webhook-timestamp") ?? "",
"webhook-signature": request.headers.get("webhook-signature") ?? "",
},
WEBHOOK_SECRET,
);
} catch (error) {
if (error instanceof WebhookVerificationError) {
return Response.json({ received: false }, { status: 403 });
}
throw error;
}
switch (event.type) {
case "checkout.created":
case "checkout.updated":
// event.data is the Checkout
break;
case "order.created":
case "order.updated":
case "order.paid":
case "order.refunded":
// event.data is the Order — fulfill, send receipt, etc.
break;
case "subscription.created":
case "subscription.updated":
case "subscription.active":
case "subscription.canceled":
case "subscription.uncanceled":
case "subscription.revoked":
// event.data is the Subscription — flip entitlements in your DB
break;
case "refund.created":
case "refund.updated":
break;
case "product.created":
case "product.updated":
break;
case "benefit.created":
case "benefit.updated":
break;
case "benefit_grant.created":
case "benefit_grant.updated":
case "benefit_grant.revoked":
// grant or revoke the user's access to a benefit
break;
case "customer.created":
case "customer.updated":
case "customer.deleted":
case "customer.state_changed":
break;
case "organization.updated":
break;
}
return Response.json({ received: true });
}event is fully typed — TypeScript will narrow event.data inside each case.
validateEvent. If your framework parsed JSON for you (Express's express.json(), Fastify's default body parser), disable it on this route or read the raw body manually. Signature verification fails on re-serialized JSON.webhook-id header — it's unique per delivery and reused on retries (Standard Webhooks spec). Don't dedupe on event.data.id: that's the resource ID and is shared across distinct events about the same resource (e.g. order.created and order.paid).Next.js Route Handler: drop the canonical handler into app/api/polar/webhook/route.ts. App Router does not auto-parse the body, so request.text() is correct.
Express: mount with the raw body parser on this route only:
app.post("/polar/webhook", express.raw({ type: "application/json" }), async (req, res) => {
const body = (req.body as Buffer).toString("utf8");
// ... validateEvent / switch ...
res.json({ received: true });
});Fastify: add a content-type parser that preserves the raw body, or use request.rawBody with @fastify/raw-body.
Hono: await c.req.text() returns the raw body, and c.req.header("webhook-id") reads headers.
Elysia: await request.text() on the standard Request.
SvelteKit: in +server.ts, await event.request.text().
Astro: in APIRoute, await request.text().
Nuxt: await readRawBody(event) from h3.
@polar-sh/<framework> packages (e.g. @polar-sh/express) — they are deprecated. @polar-sh/sdk is all you need for these recipes. The only exceptions are @polar-sh/nextjs for Next.js App Router and @polar-sh/better-auth for Better Auth.© chmonitor, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/polar-integration of chmonitor/chmonitor.
Open the folder on GitHubat commit fc39ef0
Polar Integration next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Polar Integration this skillchmonitor/chmonitor | 299 | — | ~4.3k | Automated safety check: Pass | GPL-3.0 | |
| Yalidine Delivery Integrationbighadj22/codflow | 350 | — | ~2.5k | Automated safety check: Pass | Apache-2.0 | |
| Framework Adaptershashgraph-online/awesome-codex-plugins | 1.3k | — | ~2.9k | Automated safety check: Notes | Apache-2.0 | |
| Cloudflare Workers Frameworkssecondsky/claude-skills | 227 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Supabase Development and Debuggingsupabase/agent-skills | 2.7k | 3 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Supabasecurvenote/curvenote | 170 | 5 repos | ~2.2k | Automated safety check: Pass | Custom licence |
bighadj22/codflow
Wires an app to the Yalidine (Guepex) Algerian courier API: parcels, zone lookups, delivery fees and verified delivery-status webhooks.
hashgraph-online/awesome-codex-plugins
Official @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers.
secondsky/claude-skills
Framework integration for Cloudflare Workers. An agent skill from secondsky/claude-skills.
supabase/agent-skills
General Supabase skill for database, auth, Edge Functions, Realtime and storage work, plus client libraries, migrations, security audits, debugging and reading logs.
curvenote/curvenote
A skill your agent uses when doing ANY task involving Supabase.
denoland/skills
Chooses between running regular npm frontend frameworks under Deno and building with Fresh, Deno's island-architecture framework, with Fresh 2.x guidance.
chmonitor/chmonitor
Non-animation creative direction for HyperFrames videos. An agent skill from chmonitor/chmonitor.
chmonitor/chmonitor
Audio and media assets for HyperFrames compositions, produced by one shared audio engine (scripts/audio.mjs) — multi-provider TTS (HeyGen / ElevenLabs / Kokoro local), background music + sound…
chmonitor/chmonitor
Port an existing Remotion (React) composition to HyperFrames HTML.
chmonitor/chmonitor
A skill your agent uses when the user has a music track (an audio file, or a video to pull audio from) and wants a beat-synced HyperFrames video, calm to hard-hitting.
chmonitor/chmonitor
All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus…
chmonitor/chmonitor
turn arbitrary text — an article, notes, a topic, a brief — into a faceless explainer video, up to ~3 min (sweet spot 30-90s), where every visual is invented (typography, abstract graphics…
Categories
Add Polar billing to a TypeScript/JavaScript app using the @polar-sh/sdk package. Polar Integration is an agent skill from chmonitor/chmonitor. Add Polar billing to a TypeScript/JavaScript app using the @polar-sh/sdk package.
Polar Integration fits situations like: the user wants to add a Checkout endpoint; A Customer Portal endpoint; A Webhooks endpoint for Polar to any framework — Next.js; supabase Edge Functions.
Run `npx skills add chmonitor/chmonitor --skill polar-integration -a claude-code`. Or copy the skill folder (.agents/skills/polar-integration in chmonitor/chmonitor) into .claude/skills/polar-integration in your project. Claude Code loads it when a task matches its description.
Run `npx skills add chmonitor/chmonitor --skill polar-integration -a codex`. Or copy the skill folder (.agents/skills/polar-integration in chmonitor/chmonitor) into .agents/skills/polar-integration in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add chmonitor/chmonitor --skill polar-integration -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/polar-integration, .gemini/skills/polar-integration, .github/skills/polar-integration and .opencode/skills/polar-integration in your project.
Going by SKILL.md and its folder, Polar Integration needs the command-line tools its instructions call (npm) and credentials named POLAR_ACCESS_TOKEN, POLAR_WEBHOOK_SECRET and WEBHOOK_SECRET. Our summary lists: Node.js; A credential in POLAR_ACCESS_TOKEN; A credential in POLAR_WEBHOOK_SECRET.
SKILL.md names 1 domain. As links in the text: polar.sh. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Polar Integration is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.3k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Polar Integration: Yalidine Delivery Integration (bighadj22/codflow, 350 stars), Framework Adapters (hashgraph-online/awesome-codex-plugins, 1.3k stars), Cloudflare Workers Frameworks (secondsky/claude-skills, 227 stars) and Supabase Development and Debugging (supabase/agent-skills, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
chmonitor (a GitHub organization) maintains it in chmonitor/chmonitor, which has 299 GitHub stars. The repository holds 53 skills in this directory. The repository was last updated on October 5, 2026.
Source: chmonitor/chmonitor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.