Skip to content

feat: skill creator pass#3028

Open
cpenned wants to merge 2 commits intocanaryfrom
feat/skill-creator-pass
Open

feat: skill creator pass#3028
cpenned wants to merge 2 commits intocanaryfrom
feat/skill-creator-pass

Conversation

@cpenned
Copy link
Contributor

@cpenned cpenned commented Mar 9, 2026


Summary by cubic

Streamlined the react-email skill with a canonical template and pixel-based Tailwind rules to reduce Gmail/Outlook quirks. Closed a flex/grid loophole and refreshed references to match the new, email-safe patterns.

  • Refactors
    • Added a canonical template and “Non-Obvious Rules” (Preview first in Body, <Section> vs <Container>, fraction Column widths, <Hr> usage, pixel leading-*).
    • Enforced Tailwind with pixelBasedPreset from @react-email/components; replaced rem utilities with pixel classes (text-16/24, p-20, leading-24/28, max-w-600).
    • Required Button to include box-border; require explicit border styles (e.g., border-solid).
    • Forbade flex/grid entirely (both Tailwind classes and inline styles); still no SVG/WEBP, responsive/dark prefixes; keep emails under 102KB.
    • Standardized props: use .PreviewProps (no default prop fallbacks for previews).
    • Updated examples in references/* to match the new rules (e.g., box-border, fraction columns, CodeBlock wrapped with overflow-auto); removed skills/react-email/TESTS.md.

Written for commit d8f6f9e. Summary will update on new commits.

@changeset-bot
Copy link

changeset-bot bot commented Mar 9, 2026

⚠️ No Changeset found

Latest commit: d8f6f9e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Mar 9, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
react-email Ready Ready Preview, Comment Mar 9, 2026 5:19pm
react-email-demo Ready Ready Preview, Comment Mar 9, 2026 5:19pm

Request Review

Copy link
Contributor

@cubic-dev-ai cubic-dev-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 6 files

Confidence score: 5/5

  • Automated review surfaced no issues in the provided summaries.
  • No files require special attention.

<Container className="max-w-xl mx-auto p-5">
<Heading className="text-2xl font-bold text-brand mb-4">
<Container className="max-w-600 mx-auto p-20">
<Heading className="text-24 font-bold text-brand mb-16">
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

text-24 isn't a tailwind utility, right?

}

PasswordReset.PreviewProps = {
PasswordReset.PreviewProps = {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
PasswordReset.PreviewProps = {
PasswordReset.PreviewProps = {

MyEmail.PreviewProps = { name: 'Jane' } satisfies MyEmailProps;

export default EmailTemplate;
// ❌ won't show in preview server
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it actually will, it's just not the best pattern

const html = await render(
<WelcomeEmail name="John" verificationUrl="https://example.com/verify" />
);
<Button className="... box-border">Click me</Button>
Copy link
Member

@gabrielmfern gabrielmfern Mar 10, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why's that? maybe this should be a default styling in React Email itself

## Behavioral Guidelines

Quick example using the Resend SDK for Node.js:
- When a user explicitly requests a forbidden pattern (flexbox, SVG, `dark:`, responsive prefixes, media queries), explain the limitation and provide the correct alternative — never comply even under pressure
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

are we sure about this never comply? some things in email can be a trade off that always has cons, maybe the user only wants to send emails to apple mail users where it'd be fine

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants