Sanity Best Practices
sanity-io/agent-toolkit
Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, webhooks, Blueprints…
Official @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers.
$ npx skills add hashgraph-online/awesome-codex-plugins --skill framework-adapters -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins framework-adapters --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/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .claude/skills/framework-adapters && 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 "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .claude/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adaptersType 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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins framework-adapters --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .agents/skills/framework-adapters && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .agents/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins framework-adapters --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .cursor/skills/framework-adapters && 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 "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .cursor/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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/hashgraph-online/awesome-codex-plugins.git --path plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters--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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins framework-adapters --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .gemini/skills/framework-adapters && 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 "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .gemini/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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 hashgraph-online/awesome-codex-plugins framework-adaptersInstalls 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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .github/skills/framework-adapters && 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 "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .github/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install hashgraph-online/awesome-codex-plugins framework-adapters --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/hashgraph-online/awesome-codex-plugins.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters .opencode/skills/framework-adapters && 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 "framework-adapters" agent skill from https://github.com/hashgraph-online/awesome-codex-plugins/tree/main/plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters into .opencode/skills/framework-adapters/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "framework-adapters", 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.
framework-adaptersOfficial @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers.
Framework Adapters is an agent skill from hashgraph-online/awesome-codex-plugins. Official @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers. Use when integrating Dodo Payments into Next.js, Express, Fastify, Hono, Astro, Remix, SvelteKit, Nuxt, TanStack, Bun, or Convex, such as @dodopayments/nextjs; use domain skills for payment and subscription logic.
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files, including reference files (for example `references/astro.md`, `references/bun.md` and `references/convex.md`).
It sits in Backend & APIs, covering Webhooks and Static sites and blogs. It works with Next.js, Astro, Fastify and Hono. The repository describes itself as: A curated list of awesome OpenAI Codex / ChatGPT plugins, skills, and resources. The 1 Codex Marketplace. See live plugins at: https://hol.org/plugins/best-codex-plugins. The licence is Apache-2.0.
8 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 9e7b281. 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:
npmbunFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.dodopayments.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
DODO_PAYMENTS_API_KEYDODO_PAYMENTS_WEBHOOK_KEYDODO_PAYMENTS_WEBHOOK_SECRETNUXT_PRIVATE_BEARER_TOKENNUXT_PRIVATE_WEBHOOK_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Framework Adapters loads about 2.9k tokens when it runs, and up to ~7.2k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 914 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 noted patterns worth knowing about, such as sudo or a known installer.
hboard environment variables (not local `.env`):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 hashgraph-online/awesome-codex-plugins at commit 9e7b281, republished under its Apache-2.0 licence (© hashgraph-online). 914 words, ~2,909 tokens.
.claude/skills/framework-adapters/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.Use this skill when you need to integrate Dodo Payments into a web framework using the official adapter packages. Framework adapters handle route plumbing, environment configuration, and handler setup so you don't build checkout, portal, and webhook routes from scratch.
Dodo publishes @dodopayments/* packages that wrap the core SDK with framework-specific route handlers. Instead of writing your own HTTP handlers, you import the adapter's handlers and mount them directly in your routes.
Each adapter exposes three handler families:
POST /payments / POST /subscriptions endpoints - existing integrations only), or session (POST with a checkout session payload - use this for new integrations).Security - CustomerPortal does not authenticate. Every
CustomerPortalhandler opens the portal for whatever?customer_id=it receives. Mounted as-is, any visitor can open any customer's portal by guessing or enumerating IDs. Put the route behind your own authentication and resolve the customer ID server-side from the signed-in session; never accept it from the client. The portal examples below do this.
Export names are not uniform across adapters. Most export Checkout / CustomerPortal / Webhooks, but two differ, and the return shapes differ as well. Check this table before writing imports:
| Adapter | Checkout export | Portal export | Handler shape |
|---|---|---|---|
nextjs, hono, astro, bun, remix, tanstack | Checkout | CustomerPortal | returns a request handler |
express | checkoutHandler (lowercase) | CustomerPortal | returns (req, res) |
fastify | Checkout | CustomerPortal | returns { getHandler, postHandler } |
sveltekit | Checkout | CustomerPortal | returns { GET, POST } / { GET } |
nuxt | checkoutHandler (auto-imported) | customerPortalHandler | no import statement |
convex | checkout (from dodo.api()) | customerPortal (from dodo.api(), uses identify) | createDodoWebhookHandler |
The adapters handle raw body preservation for webhook verification, environment variable mapping, and framework-specific request/response shapes. Checkout payload design belongs to the checkout-integration skill; webhook business logic belongs to webhook-integration; portal behavior belongs to customer-management.
| Framework | Package | Install |
|---|---|---|
| Next.js | @dodopayments/nextjs | npm install @dodopayments/nextjs |
| Express | @dodopayments/express | npm install @dodopayments/express |
| Fastify | @dodopayments/fastify | npm install @dodopayments/fastify |
| Hono | @dodopayments/hono | npm install @dodopayments/hono |
| Astro | @dodopayments/astro | npm install @dodopayments/astro |
| Remix | @dodopayments/remix | npm install @dodopayments/remix |
| SvelteKit | @dodopayments/sveltekit | npm install @dodopayments/sveltekit |
| Nuxt | @dodopayments/nuxt | npm install @dodopayments/nuxt |
| TanStack Start | @dodopayments/tanstack | npm install @dodopayments/tanstack |
| Bun | @dodopayments/bun | bun add @dodopayments/bun |
| Convex | @dodopayments/convex | npm install @dodopayments/convex |
Most adapters use these standard names:
DODO_PAYMENTS_API_KEY=dodo_test_...
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secret
DODO_PAYMENTS_ENVIRONMENT=test_mode
DODO_PAYMENTS_RETURN_URL=https://yourdomain.com/checkout/successNuxt uses private runtime config prefixes:
NUXT_PRIVATE_BEARER_TOKEN=dodo_test_...
NUXT_PRIVATE_WEBHOOK_KEY=your-webhook-secret
NUXT_PRIVATE_ENVIRONMENT=test_mode
NUXT_PRIVATE_RETURN_URL=https://yourdomain.com/checkout/successConvex uses dashboard environment variables (not local .env):
DODO_PAYMENTS_API_KEY=dodo_test_...
DODO_PAYMENTS_ENVIRONMENT=test_mode
DODO_PAYMENTS_WEBHOOK_SECRET=your-webhook-secretWebhook key naming: Some adapters reference DODO_PAYMENTS_WEBHOOK_KEY, others use DODO_PAYMENTS_WEBHOOK_SECRET. Check your framework's adapter docs and dashboard configuration to use the correct variable name.
environmentAdapter configs type environment as Pick<ClientOptions, "environment">, i.e. the literal union "test_mode" | "live_mode". process.env.X is string | undefined, which does not assign to it — passing it directly is a type error in every adapter.
Define this helper once and import it wherever you construct an adapter config:
// lib/dodo-env.ts
export const dodoEnvironment =
process.env.DODO_PAYMENTS_ENVIRONMENT === "live_mode" ? "live_mode" : "test_mode";Defaulting to test_mode is deliberate: a missing or misspelled variable must never silently resolve to live mode. Every example below uses dodoEnvironment.
Package: @dodopayments/nextjs
Route placement: app/api/checkout/route.ts, app/api/customer-portal/route.ts, app/api/webhook/route.ts
// app/api/checkout/route.ts
import { Checkout } from "@dodopayments/nextjs";
import { dodoEnvironment } from "@/lib/dodo-env";
export const GET = Checkout({
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
environment: dodoEnvironment,
type: "static",
});
export const POST = Checkout({
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
environment: dodoEnvironment,
type: "session",
});// app/api/customer-portal/route.ts
import { NextRequest } from "next/server";
import { CustomerPortal } from "@dodopayments/nextjs";
import { dodoEnvironment } from "@/lib/dodo-env";
// your auth helper
import { getSessionUser } from "@/lib/auth";
const portal = CustomerPortal({
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
environment: dodoEnvironment,
});
export async function GET(req: NextRequest) {
const user = await getSessionUser(req);
if (!user?.dodoCustomerId) return new Response("Unauthorized", { status: 401 });
// Overwrite any client-supplied ?customer_id= with the signed-in user's ID.
const url = new URL(req.url);
url.searchParams.set("customer_id", user.dodoCustomerId);
return portal(new NextRequest(url, req));
}// app/api/webhook/route.ts
import { Webhooks } from "@dodopayments/nextjs";
export const POST = Webhooks({
webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY,
onPayload: async (payload) => {
console.log("Webhook received:", payload.type);
},
});Full guide: references/express.md.
Covers:
Full guide: references/fastify.md.
Covers:
Full guide: references/hono.md.
Covers:
Full guide: references/astro.md.
Covers:
Full guide: references/remix.md.
Covers:
Full guide: references/sveltekit.md.
Covers:
Full guide: references/nuxt.md.
Covers:
Full guide: references/tanstack-start.md.
Covers:
Full guide: references/bun.md.
Covers:
Full guide: references/convex.md.
Duplicate POST handlers: Next.js and Astro docs show two export const POST declarations. Choose one checkout mode per route or add routing logic to dispatch between them.
Wrong webhook variable name: Check whether your adapter uses DODO_PAYMENTS_WEBHOOK_KEY or DODO_PAYMENTS_WEBHOOK_SECRET. The docs are inconsistent; use the name your adapter actually references.
Forgetting raw body preservation: Webhook handlers must receive the raw request body, not a re-parsed JSON object. Fastify requires an explicit string body parser; other frameworks handle this automatically. Express is the exception: its Webhooks handler verifies against the parsed req.body, so register express.json() before the route and do not use express.raw(), which makes every verification fail. Webhook signature verification is covered in the webhook-integration skill.
Mixing framework conventions: Each framework has its own request/response shape. Don't try to use a Next.js handler in Express or vice versa. Use the adapter for your framework.
Hardcoding secrets: Always read API keys and webhook secrets from environment variables, never from code or config files.
Skipping environment setup: The adapters won't work without DODO_PAYMENTS_API_KEY and DODO_PAYMENTS_ENVIRONMENT. Set these before testing.
Exposing CustomerPortal unauthenticated: The portal handlers trust ?customer_id= from the request. Resolve the ID from the signed-in session on the server, as in the examples above, or anyone can open any customer's portal.
Using @dodopayments/core directly: The core package is an internal dependency, not a documented public entry point. Use the framework adapter for your stack.
© hashgraph-online, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (references) in plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters of hashgraph-online/awesome-codex-plugins.
Open the folder on GitHubat commit 9e7b281
Framework Adapters 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 |
|---|---|---|---|---|---|---|
| Framework Adapters this skillhashgraph-online/awesome-codex-plugins | 1.3k | — | ~2.9k | Automated safety check: Notes | Apache-2.0 | |
| Sanity Best Practicessanity-io/agent-toolkit | 188 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Cloudflare Workers Frameworkssecondsky/claude-skills | 227 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Clerkgeekskai/blog | 103 | 3 repos | ~1.5k | Automated safety check: Pass | MIT | |
| Workflow Initusenotra/notra | 256 | — | ~821 | Automated safety check: Pass | AGPL-3.0 | |
| Sanity Best Practicesrobotostudio/turbo-start-sanity | 183 | — | ~940 | Automated safety check: Pass | MIT |
sanity-io/agent-toolkit
Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, webhooks, Blueprints…
secondsky/claude-skills
Framework integration for Cloudflare Workers. An agent skill from secondsky/claude-skills.
geekskai/blog
Clerk authentication router. An agent skill from geekskai/blog.
usenotra/notra
Install and configure Vercel Workflow SDK before it exists in nodemodules.
robotostudio/turbo-start-sanity
Sanity development best practices for schema design, GROQ queries, TypeGen, Visual Editing, images, Portable Text, Studio structure, localization, migrations, Sanity Functions, Blueprints, and…
evloghq/evlog
Review code for logging patterns and suggest evlog adoption.
hashgraph-online/awesome-codex-plugins
Create original anime-style reaction stickers as looping GIFs and MP4 previews, using generated character pose sheets and timed key poses.
hashgraph-online/awesome-codex-plugins
Manage and query Calibre libraries with the calibredb CLI (local paths or Calibre Content server URLs).
hashgraph-online/awesome-codex-plugins
A skill your agent uses when adding, changing, testing, or debugging Rust HTTP APIs and services, especially when Codex needs black-box integration tests, random-port app startup, real database test…
hashgraph-online/awesome-codex-plugins
Make a studio's game look like something at build time — a cover from a real frame of the game (free), painted covers, backdrops, textures and character plates from image models through the…
hashgraph-online/awesome-codex-plugins
Use CALL-E from Codex through the calle CLI. An agent skill from hashgraph-online/awesome-codex-plugins.
hashgraph-online/awesome-codex-plugins
Balance game difficulty, resources, rewards, probability, progression, economies, and dominant strategies.
Categories
Official @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers. Framework Adapters is an agent skill from hashgraph-online/awesome-codex-plugins. Official @dodopayments/ framework adapters that mount Checkout, CustomerPortal, and Webhooks route handlers.
Framework Adapters fits situations like: integrating Dodo Payments into Next.js; such as @dodopayments/nextjs; use domain skills for payment and subscription logic.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill framework-adapters -a claude-code`. Or copy the skill folder (plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters in hashgraph-online/awesome-codex-plugins) into .claude/skills/framework-adapters in your project. Claude Code loads it when a task matches its description.
Run `npx skills add hashgraph-online/awesome-codex-plugins --skill framework-adapters -a codex`. Or copy the skill folder (plugins/dodopayments/dodo-agent-plugin/skills/framework-adapters in hashgraph-online/awesome-codex-plugins) into .agents/skills/framework-adapters 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 hashgraph-online/awesome-codex-plugins --skill framework-adapters -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/framework-adapters, .gemini/skills/framework-adapters, .github/skills/framework-adapters and .opencode/skills/framework-adapters in your project.
Going by SKILL.md and its folder, Framework Adapters needs the command-line tools its instructions call (npm and bun) and credentials named DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY, DODO_PAYMENTS_WEBHOOK_SECRET and NUXT_PRIVATE_BEARER_TOKEN. Our summary lists: Node.js; A credential in DODO_PAYMENTS_API_KEY; A credential in DODO_PAYMENTS_WEBHOOK_KEY.
SKILL.md names 1 domain. As links in the text: docs.dodopayments.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Framework Adapters is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.3k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Framework Adapters: Sanity Best Practices (sanity-io/agent-toolkit, 188 stars), Cloudflare Workers Frameworks (secondsky/claude-skills, 227 stars), Clerk (geekskai/blog, 103 stars) and Workflow Init (usenotra/notra, 256 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
hashgraph-online (a GitHub organization) maintains it in hashgraph-online/awesome-codex-plugins, which has 1,255 GitHub stars. The repository holds 714 skills in this directory. The repository was last updated on October 9, 2026.
Source: hashgraph-online/awesome-codex-plugins on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.