grill-me
Interview the user relentlessly about a plan or design until reaching shared understanding,…
Use when configuring SMTP email/mailer settings in a Webiny project. Triggers on: "configure email", "set up SMTP", "mailer config", "sending emails", "email not working", "configure mailer", "SMTP password", "Api.Mailer.Smtp".
$ npx -y skills add webiny/webiny-js --skill mailer-smtp --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mailer-smtpContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when configuring SMTP email/mailer settings in a Webiny project. Triggers on: "configure email", "set up SMTP", "mailer config", "sending emails", "email not working", "configure mailer", "SMTP password", "Api.Mailer.Smtp".
name: webiny-mailer-smtp description: > Use when configuring SMTP email/mailer settings in a Webiny project. Triggers on: "configure email", "set up SMTP", "mailer config", "sending emails", "email not working", "configure mailer", "SMTP password", "Api.Mailer.Smtp".
Add `<Api.Mailer.Smtp ... />` to your `webiny.config.tsx` to configure SMTP email delivery at build time. The component serializes the settings into the build artifact — always pass the password via an environment variable, never hard-code it. Deploy the API after making changes.
import { Api } from "webiny/extensions";
<Api.Mailer.Smtp
host={"smtp.example.com"}
port={587}
user={"smtp-user"}
password={process.env.SMTP_PASSWORD!}
from={"noreply@example.com"}
replyTo={"support@example.com"} {/* optional */}
/>Place this inside the JSX returned by your config component in `webiny.config.tsx`, alongside other `<Api.*>` extensions.
| Prop | Type | Required | Description | | ---------- | -------- | -------- | ---------------------------------------------- | | `host` | `string` | Yes | SMTP server hostname | | `port` | `number` | Yes | SMTP server port (positive integer) | | `user` | `string` | Yes | SMTP authentication username | | `password` | `string` | Yes | SMTP authentication password — **use env var** | | `from` | `string` | Yes | Default sender address | | `replyTo` | `string` | No | Default reply-to address |
`from` and `replyTo` are validated by the [`email-addresses`](https://www.npmjs.com/package/email-addresses) package against RFC 5322.
import React from "react";
import { Api, Admin, Core } from "webiny/extensions";
const MyConfig = () => {
return (
<>
{/* ... other extensions ... */}
{/* Mailer: configure SMTP transport via code */}
<Api.Mailer.Smtp
host={"smtp.sendgrid.net"}
port={587}
user={"apikey"}
password={process.env.SENDGRID_API_KEY!}
from={"noreply@acme.com"}
replyTo={"support@acme.com"}
/>
</>
);
};Add `SENDGRID_API_KEY=your-secret` to your `.env` file (never commit it).
| Mistake | Fix | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | Hard-coding the password | Use `process.env.SMTP_PASSWORD!` | | `process.env.SMTP_PASSWORD` undefined at build time → "expected string, received object" error | Ensure the env var is set before deploying | | `from`/`replyTo` value fails validation | Must be a valid RFC 5322 mailbox address | | Settings not taking effect | Run `yarn webiny build api` after editing `webiny.config.tsx` |
# After editing webiny.config.tsx, build the API yarn webiny build api
> **Note:** This command only works in a `dev` environment. For other environments, run `yarn webiny build api --env=YOUR_ENV` instead.
// Environment variable in .env SMTP_PASSWORD = your - smtp - password - here;
Open-source content platform. Self-hosted on AWS serverless. Built as a TypeScript framework you extend with code, not a closed product you configure through a UI. Runs on Lambda, DynamoDB, S3, and CloudFront inside your own AWS account. Scales automatically.
Repo: webiny/webiny-js
Interview the user relentlessly about a plan or design until reaching shared understanding,…
Turn a PRD into a multi-phase implementation plan using tracer-bullet vertical slices, saved…
Webiny-only. Run all checks required before packages are ready for publish: deps, build,…
Use when running tests. Shows how to run tests for a single package, including OpenSearch…
Generate, refresh, and maintain Webiny MCP server skills from source documentation and…
Create a PRD through user interview, codebase exploration, and module design, then submit as…