React Email
aiskillstore/marketplace
A skill your agent uses when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or…
A skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
$ npx skills add viclafouch/meme-studio --skill react-email -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install viclafouch/meme-studio react-email --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/viclafouch/meme-studio.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/react-email .claude/skills/react-email && 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 "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .claude/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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/viclafouch/meme-studio/tree/master/.agents/skills/react-emailType 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 viclafouch/meme-studio --skill react-email -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install viclafouch/meme-studio react-email --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viclafouch/meme-studio.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/react-email .agents/skills/react-email && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .agents/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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 viclafouch/meme-studio --skill react-email -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install viclafouch/meme-studio react-email --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viclafouch/meme-studio.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/react-email .cursor/skills/react-email && 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 "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .cursor/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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/viclafouch/meme-studio.git --path .agents/skills/react-email--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 viclafouch/meme-studio --skill react-email -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install viclafouch/meme-studio react-email --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viclafouch/meme-studio.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/react-email .gemini/skills/react-email && 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 "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .gemini/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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 viclafouch/meme-studio react-emailInstalls 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 viclafouch/meme-studio --skill react-email -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/viclafouch/meme-studio.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/react-email .github/skills/react-email && 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 "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .github/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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 viclafouch/meme-studio --skill react-email -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install viclafouch/meme-studio react-email --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/viclafouch/meme-studio.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/react-email .opencode/skills/react-email && 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 "react-email" agent skill from https://github.com/viclafouch/meme-studio/tree/master/.agents/skills/react-email into .opencode/skills/react-email/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "react-email", 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.
react-emailA skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
React Email is an agent skill from viclafouch/meme-studio. Use when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including reference files (for example `README.md`, `TESTS.md` and `references/COMPONENTS.md`).
It sits in Backend & APIs, covering Transactional email, React components and Newsletters. It works with React, TypeScript, npm and Tailwind CSS. The repository describes itself as: 📌 A complete and fast website building in Next.js for creating and sharing "internet memes". The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit d8fa0be. 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:
yarnpnpmbunnpmnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
youtube.comAlso links to:
react.emailgithub.comresend.comcaniemail.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
RESEND_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
React Email loads about 3.6k tokens when it runs, and up to ~18k if it reads all its reference files. Until then it costs about 45 tokens; SKILL.md has 1,217 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 viclafouch/meme-studio at commit d8fa0be, republished under its MIT licence (© viclafouch). 1,217 words, ~3,612 tokens.
.claude/skills/react-email/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.Build and send HTML emails using React components - a modern, component-based approach to email development that works across all major email clients.
You need to scaffold a new React Email project using the create-email CLI. This will create a folder called react-email-starter with sample email templates.
Using npm:
npx create-email@latestUsing yarn:
yarn create emailUsing pnpm:
pnpm create emailUsing bun:
bun create emailYou must change into the newly created project folder:
cd react-email-starterYou need to install all project dependencies before running the development server.
Using npm:
npm installUsing yarn:
yarnUsing pnpm:
pnpm installUsing bun:
bun installYour task is to start the local preview server to view and edit email templates.
Using npm:
npm run devUsing yarn:
yarn devUsing pnpm:
pnpm devUsing bun:
bun devConfirm the development server is running by checking that localhost:3000 is accessible. The server will display a preview interface where you can view email templates from the emails folder.
Assuming React Email is installed in an existing project, update the top-level package.json file with a script to run the React Email preview server.
{
"scripts": {
"email": "email dev --dir emails --port 3000"
}
}Make sure the path to the emails folder is relative to the base project directory.
Ensure the tsconfig.json includes proper support for jsx.
Replace the sample email templates. Here is how to create a new email template:
Create an email component with proper structure using the Tailwind component for styling:
import {
Html,
Head,
Preview,
Body,
Container,
Heading,
Text,
Button,
Tailwind,
pixelBasedPreset
} from '@react-email/components';
interface WelcomeEmailProps {
name: string;
verificationUrl: string;
}
export default function WelcomeEmail({ name, verificationUrl }: WelcomeEmailProps) {
return (
<Html lang="en">
<Tailwind
config={{
presets: [pixelBasedPreset],
theme: {
extend: {
colors: {
brand: '#007bff',
},
},
},
}}
>
<Head />
<Preview>Welcome - Verify your email</Preview>
<Body className="bg-gray-100 font-sans">
<Container className="max-w-xl mx-auto p-5">
<Heading className="text-2xl text-gray-800">
Welcome!
</Heading>
<Text className="text-base text-gray-800">
Hi {name}, thanks for signing up!
</Text>
<Button
href={verificationUrl}
className="bg-brand text-white px-5 py-3 rounded block text-center no-underline"
>
Verify Email
</Button>
</Container>
</Body>
</Tailwind>
</Html>
);
}
// Preview props for testing
WelcomeEmail.PreviewProps = {
name: 'John Doe',
verificationUrl: 'https://example.com/verify/abc123'
} satisfies WelcomeEmailProps;
export { WelcomeEmail };See references/COMPONENTS.md for complete component documentation.
Core Structure:
Html - Root wrapper with lang attributeHead - Meta elements, styles, fontsBody - Main content wrapperContainer - Centers content (max-width layout)Section - Layout sectionsRow & Column - Multi-column layoutsTailwind - Enables Tailwind CSS utility classesContent:
Preview - Inbox preview text, always first in BodyHeading - h1-h6 headingsText - ParagraphsButton - Styled link buttonsLink - HyperlinksImg - Images (see Static Files section below)Hr - Horizontal dividersSpecialized:
CodeBlock - Syntax-highlighted codeCodeInline - Inline codeMarkdown - Render markdownFont - Custom web fontsWhen a user requests an email template, ask clarifying questions FIRST if they haven't provided:
Example response to vague request:
Before I create your email template, I have a few questions:
- What is your primary brand color? (hex code)
- Do you have a logo file? (PNG or JPG - note: SVG and WEBP don't work reliably in email clients)
- What tone do you prefer - professional, casual, or minimal?
- Where will you host static assets in production? (e.g., https://cdn.example.com)
Local images must be placed in the static folder inside your emails directory:
project/
├── emails/
│ ├── welcome.tsx
│ └── static/ <-- Images go here
│ └── logo.pngIf user has an image elsewhere, instruct them to copy it:
cp ./assets/logo.png ./emails/static/logo.pngUse this pattern for images that work in both dev preview and production:
const baseURL = process.env.NODE_ENV === "production"
? "https://cdn.example.com" // User's production CDN
: "";
export default function Email() {
return (
<Img
src={`${baseURL}/static/logo.png`}
alt="Logo"
width="150"
height="50"
/>
);
}How it works:
baseURL is empty, so URL is /static/logo.png - served by React Email's dev serverbaseURL is the CDN domain, so URL is https://cdn.example.com/static/logo.pngImportant: Always ask the user for their production hosting URL. Do not hardcode localhost:3000.
const EmailTemplate = (props) => {
return (
{/* ... rest of the code ... */}
<h1>Hello, {props.variableName}!</h1>
{/* ... rest of the code ... */}
);
}
EmailTemplate.PreviewProps = {
// ... rest of the props ...
variableName: "{{variableName}}",
// ... rest of the props ...
};
export default EmailTemplate;Use the Tailwind component for styling if the user is actively using Tailwind CSS in their project. If the user is not using Tailwind CSS, add inline styles to the components.
rem units, use the pixelBasedPreset for the Tailwind configuration.<Head /> inside <Tailwind> when using Tailwind CSSconst Email = (props) => {
return (
<div>
<a href={props.source}>click here if you want candy 👀</a>
</div>
);
}
Email.PreviewProps = {
source: "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
};font-sans py-10 bg-gray-100m-0 on address/copyrightbox-border to prevent padding overflowWhen requested: container black (#000), background dark gray (#151516)
import { render } from '@react-email/components';
import { WelcomeEmail } from './emails/welcome';
const html = await render(
<WelcomeEmail name="John" verificationUrl="https://example.com/verify" />
);import { render } from '@react-email/components';
import { WelcomeEmail } from './emails/welcome';
const text = await render(<WelcomeEmail name="John" verificationUrl="https://example.com/verify" />, { plainText: true });React Email supports sending with any email service provider. If the user wants to know how to send, view the Sending guidelines.
Quick example using the Resend SDK for Node.js:
import { Resend } from 'resend';
import { WelcomeEmail } from './emails/welcome';
const resend = new Resend(process.env.RESEND_API_KEY);
const { data, error } = await resend.emails.send({
from: 'Acme <onboarding@resend.dev>',
to: ['user@example.com'],
subject: 'Welcome to Acme',
react: <WelcomeEmail name="John" verificationUrl="https://example.com/verify" />
});
if (error) {
console.error('Failed to send:', error);
}The Node SDK automatically handles the plain-text rendering and HTML rendering for you.
See references/I18N.md for complete i18n documentation.
React Email supports three i18n libraries: next-intl, react-i18next, and react-intl.
import { createTranslator } from 'next-intl';
import {
Html,
Body,
Container,
Text,
Button,
Tailwind,
pixelBasedPreset
} from '@react-email/components';
interface EmailProps {
name: string;
locale: string;
}
export default async function WelcomeEmail({ name, locale }: EmailProps) {
const t = createTranslator({
messages: await import(\`../messages/\${locale}.json\`),
namespace: 'welcome-email',
locale
});
return (
<Html lang={locale}>
<Tailwind config={{ presets: [pixelBasedPreset] }}>
<Body className="bg-gray-100 font-sans">
<Container className="max-w-xl mx-auto p-5">
<Text className="text-base text-gray-800">{t('greeting')} {name},</Text>
<Text className="text-base text-gray-800">{t('body')}</Text>
<Button href="https://example.com" className="bg-blue-600 text-white px-5 py-3 rounded">
{t('cta')}
</Button>
</Container>
</Body>
</Tailwind>
</Html>
);
}Message files (`messages/en.json`, `messages/es.json`, etc.):
{
"welcome-email": {
"greeting": "Hi",
"body": "Thanks for signing up!",
"cta": "Get Started"
}
}Test across email clients - Test in Gmail, Outlook, Apple Mail, Yahoo Mail. Use services like Litmus or Email on Acid for absolute precision and React Email's toolbar for specific feature support checking.
Keep it responsive - Max-width around 600px, test on mobile devices.
Use absolute image URLs - Host on reliable CDN, always include `alt` text.
Provide plain text version - Required for accessibility and some email clients.
Keep file size under 102KB - Gmail clips larger emails.
Add proper TypeScript types - Define interfaces for all email props.
Include preview props - Add `.PreviewProps` to components for development testing.
Handle errors - Always check for errors when sending emails.
Use verified domains - For production, use verified domains in `from` addresses.
See references/PATTERNS.md for complete examples including:
© viclafouch, MIT. 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 7 other files (references) in .agents/skills/react-email of viclafouch/meme-studio.
Open the folder on GitHubat commit d8fa0be
We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 2 other GitHub owners. This page covers the copy in viclafouch/meme-studio, which our catalogue first saw on October 7, 2026.
React Email 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 |
|---|---|---|---|---|---|---|
| React Email this skillviclafouch/meme-studio | 110 | 2 repos | ~3.6k | Automated safety check: Pass | MIT | |
| React Emailaiskillstore/marketplace | 430 | 1 repos | ~3.6k | Automated safety check: Pass | MIT | |
| Reduce Bundle Sizekcsujeet/ilamy-calendar | 351 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Web Artifacts Builderanthropics/skills | 180k | 41 repos | ~769 | Automated safety check: Pass | Apache-2.0 | |
| Dify Component Writing Guidelanggenius/dify | 158k | — | ~626 | Automated safety check: Pass | Custom licence | |
| Animated React Component LibrariesHainrixz/editor-pro-max | 261 | 1 repos | ~5.7k | Automated safety check: Pass | Custom licence |
aiskillstore/marketplace
A skill your agent uses when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or…
kcsujeet/ilamy-calendar
Systematically reduce the shipped bundle size of a JS/TS library without sacrificing code readability or breaking consumer APIs.
anthropics/skills
Builds multi-component claude.ai HTML artifacts as a small React, TypeScript and Tailwind project, then bundles it into one shareable HTML file.
langgenius/dify
Use when implementing or refactoring React/TypeScript components and the task requires decisions about component ownership, feature boundaries, state, data…
Hainrixz/editor-pro-max
Helps choose and drop in animated React components from Magic UI and React Bits for landing pages, marketing sites and dashboards, instead of hand-coding animations.
papermark/papermark
Shows how to subscribe to Trigger.dev task runs from the backend and from React for progress indicators, live dashboards, AI response streams and approval waits.
viclafouch/meme-studio
A skill your agent uses when building email features, emails going to spam, high bounce rates, setting up SPF/DKIM/DMARC authentication, implementing email capture, ensuring compliance (CAN-SPAM…
viclafouch/meme-studio
A skill your agent uses when sending transactional emails (welcome messages, order confirmations, password resets, receipts), notifications, or bulk emails via Resend API.
viclafouch/meme-studio
A skill your agent uses when working with Resend email platform - routes to specific sub-skills for sending, receiving, audiences, or broadcasts.
viclafouch/meme-studio
Skill for integrating Better Auth - the comprehensive TypeScript authentication framework.
viclafouch/meme-studio
A skill your agent uses when receiving emails with Resend - setting up inbound domains, processing email.received webhooks, retrieving email content/attachments, or forwarding received emails.
viclafouch/meme-studio
Audit all outdated dependencies with detailed research on changelogs, breaking changes, bug fixes, and deprecations.
Works with
A skill your agent uses when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails. React Email is an agent skill from viclafouch/meme-studio. Use when creating HTML email templates with React components - welcome emails, password resets, notifications, order confirmations, newsletters, or transactional emails.
React Email fits situations like: creating HTML email templates with React components - welcome emails; password resets; order confirmations; transactional emails.
Run `npx skills add viclafouch/meme-studio --skill react-email -a claude-code`. Or copy the skill folder (.agents/skills/react-email in viclafouch/meme-studio) into .claude/skills/react-email in your project. Claude Code loads it when a task matches its description.
Run `npx skills add viclafouch/meme-studio --skill react-email -a codex`. Or copy the skill folder (.agents/skills/react-email in viclafouch/meme-studio) into .agents/skills/react-email 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 viclafouch/meme-studio --skill react-email -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/react-email, .gemini/skills/react-email, .github/skills/react-email and .opencode/skills/react-email in your project.
Going by SKILL.md and its folder, React Email needs the command-line tools its instructions call (yarn, pnpm, bun, npm and npx) and credentials named RESEND_API_KEY. Our summary lists: Node.js; A credential in RESEND_API_KEY.
SKILL.md names 5 domains. In commands or code: youtube.com; the agent is likely to contact it when it follows the instructions. As links in the text: react.email, github.com, resend.com and caniemail.com. 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.
React Email is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 14k 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 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with React Email: React Email (aiskillstore/marketplace, 430 stars), Reduce Bundle Size (kcsujeet/ilamy-calendar, 351 stars), Web Artifacts Builder (anthropics/skills, 180k stars) and Dify Component Writing Guide (langgenius/dify, 158k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
viclafouch (a GitHub user) maintains it in viclafouch/meme-studio, which has 110 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on March 31, 2026.
Source: viclafouch/meme-studio on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.