${count === 1
+ ? `The mentoring round is now open and a mentor has been assigned to your project ${escapeHtml(projectTitle)}:`
+ : `The mentoring round is now open and ${count} mentors have been assigned to your project ${escapeHtml(projectTitle)}:`}
+```
+
+- [ ] **Step 4: Typecheck**
+
+Run: `npm run typecheck`
+Expected: PASS.
+
+- [ ] **Step 5: Manual verification (no component-test harness exists in this repo)**
+
+Run: `npm run dev`, log in as an admin, open a MENTORING round's detail page. Confirm: the "Send Welcome / Reminder" card appears in Notifications (and is absent on non-mentoring rounds). Click it → the dialog opens, shows a recipient count, renders the stacked **Mentor version / Team version** preview, updates when you type a note and refresh, and the toast reports a count on send. (To eyeball the raw HTML earlier/offline, call the `previewMentorshipWelcome` query via the tRPC panel or temporarily write `pv.html` to a file in the test.)
+
+- [ ] **Step 6: Commit**
+
+```bash
+git add src/components/admin/round/send-mentorship-welcome-button.tsx "src/app/(admin)/admin/rounds/[roundId]/page.tsx"
+git commit -m "feat(admin): send mentorship welcome/reminder button on mentoring rounds"
+```
+
+---
+
+## Task 6: Mentor "Email all team members" button
+
+**Files:**
+- Modify: `src/app/(mentor)/mentor/projects/[id]/page.tsx` (Team Members card; `CardContent` begins around line 350, members at 332–427; `Button` and `Mail` already imported)
+
+- [ ] **Step 1: Add the button at the top of the Team Members `CardContent`**
+
+Immediately after the `` opening tag of the Team Members card, insert:
+
+```tsx
+ {(() => {
+ const emails = (project.teamMembers ?? [])
+ .map((m) => m.user.email)
+ .filter((e): e is string => !!e)
+ if (emails.length === 0) return null
+ const mailto = `mailto:${emails.join(',')}?subject=${encodeURIComponent(
+ `MOPC Mentorship — ${project.title}`,
+ )}`
+ return (
+
+
+
+ )
+ })()}
+```
+
+- [ ] **Step 2: Typecheck**
+
+Run: `npm run typecheck`
+Expected: PASS. (`Button` is imported at line 14; `Mail` at line 46; `project.title` and `project.teamMembers[].user.email` are part of `getProjectDetail`.)
+
+- [ ] **Step 3: Manual verification**
+
+In `npm run dev`, open a mentor's project detail page. Confirm the "Email all team members" button shows in the Team Members card, and clicking it opens the OS mail client with every team member's address in the To: field and the subject pre-filled. Confirm it is hidden when a project has no team members.
+
+- [ ] **Step 4: Commit**
+
+```bash
+git add "src/app/(mentor)/mentor/projects/[id]/page.tsx"
+git commit -m "feat(mentor): email all team members button on project detail"
+```
+
+---
+
+## Task 7: Full verification
+
+- [ ] **Step 1: Run the full test suite**
+
+Run: `npx vitest run`
+Expected: PASS (all existing tests + the two new files). Pay attention that `tests/unit/mentor-email-deferral.test.ts` still passes.
+
+- [ ] **Step 2: Typecheck + lint + build**
+
+Run: `npm run typecheck && npm run lint && npm run build`
+Expected: all PASS (CLAUDE.md requires a green build before push).
+
+- [ ] **Step 3: Final commit (if lint/format changed anything)**
+
+```bash
+git add -A
+git commit -m "chore(mentor): lint/format for mentorship comms feature" || echo "nothing to commit"
+```
+
+---
+
+## Self-Review Notes
+
+- **Spec coverage:** Email-all button → Task 6. Upgraded auto-intro emails (instructions + contacts) → Tasks 1–3. Re-sendable manual reminder with optional note → Task 4. Tailored content with embedded contact emails → Task 1. Preview → Task 4 (query) + Task 5 (dialog). Both-audience default, no toggle → Task 4. Email in `To:` → Task 6. Teammates + mentor in team email → Tasks 1 & 4.
+- **Type consistency:** `getMentorBulkAssignmentTemplate(name, projects[{title,url,teamMembers?}], dashUrl, customNote?)`, `getTeamMentorIntroductionTemplate(recipientName, projectTitle, mentors, workspaceUrl, teammates?, customNote?)`, senders return `Promise`, procedures return `{ html, recipientCount }` and `{ sent, failed }` — used consistently by the dialog (`recipientCount`, `data.sent`, `data.failed`).
+- **No placeholders:** every code step contains full code; instruction copy is final text.
diff --git a/docs/superpowers/specs/2026-06-01-mentorship-comms-and-welcome-email-design.md b/docs/superpowers/specs/2026-06-01-mentorship-comms-and-welcome-email-design.md
new file mode 100644
index 0000000..2ead627
--- /dev/null
+++ b/docs/superpowers/specs/2026-06-01-mentorship-comms-and-welcome-email-design.md
@@ -0,0 +1,122 @@
+# Mentorship Communications & Welcome/Reminder Email — Design
+
+- **Date:** 2026-06-01
+- **Status:** Approved (pending spec review)
+- **Author:** Matt + Claude
+- **Topic:** Make mentor↔team contact effortless and add a re-sendable, instructional "welcome/reminder" email for mentoring rounds.
+
+## Context
+
+MOPC already has a working mentorship feature:
+
+- **Two-way in-app messaging** exists (`MentorMessage` model; `WorkspaceChat` + `MentorChat` components; `trpc.mentor.sendMessage` / `getMessages` and `trpc.applicant.sendMentorMessage` / `getMentorMessages`). Mentors are auto-notified when applicants write.
+- **Contact emails are already visible**: mentors see each team member's email as individual `mailto:` links (`src/app/(mentor)/mentor/projects/[id]/page.tsx`); applicants see their mentor's name+email (`src/app/(applicant)/applicant/mentor/page.tsx`) and teammates' emails (`src/app/(applicant)/applicant/team/page.tsx`).
+- **Round-open auto emails already fire**: flipping a `MENTORING` round draft→active sends a coalesced *"you've been assigned to N projects"* email to each mentor (`getMentorBulkAssignmentTemplate` / `sendMentorBulkAssignmentEmail`) and a *"meet your mentors"* intro to each team (`getTeamMentorIntroductionTemplate` / `sendTeamMentorIntroductionEmail`). These are one-time, gated by `MentorAssignment.notificationSentAt` and `MentorAssignment.teamIntroducedAt` (`src/server/services/round-engine.ts`).
+
+Two gaps remain:
+
+1. There is **no single "email all team members"** affordance for mentors — only per-person `mailto:` links.
+2. The round-open emails **don't explain how to use the mentorship features**, and there is **no way to re-send** them later as a reminder.
+
+## Goals
+
+- A mentor can email their whole team in one click (opens their mail client, all members in `To:`).
+- The round-open assignment emails are **upgraded in place** to include (a) the relevant contact emails and (b) how-to-use-the-mentorship-features instructions.
+- An admin can **re-send** that same email on demand (a "welcome/reminder" blast) to all mentors + teams in a mentoring round, with an optional custom note.
+- The admin can **preview** the exact email (mentor + team versions) before sending.
+
+## Non-goals
+
+- No new in-app messaging surfaces (the chat already exists).
+- No new email-provider infrastructure (reuse `src/lib/email.ts` wrapper, helpers, throttling, `NotificationLog`).
+- No mentors-only / teams-only targeting toggle for v1 — the reminder sends to **both** audiences. (Can be added later if needed.)
+
+## Feature 1 — Mentor "Email all team members" button
+
+- **Location:** `src/app/(mentor)/mentor/projects/[id]/page.tsx`, in the existing Team Members card, alongside the per-member `mailto:` links.
+- **Behavior:** builds `mailto:?subject=...` with **all active team members in `To:`** (per decision), subject pre-filled `MOPC Mentorship — {project title}`. Clicking opens the mentor's default mail app.
+- **Edge cases:** filter out blank/missing emails defensively (schema makes `User.email` required+non-null, but be safe); hide the button when the team has zero emailable members.
+- **Scope:** pure client-side; no backend changes.
+
+## Feature 2 — Unified mentorship welcome/reminder email
+
+### Decision: upgrade in place, don't duplicate
+
+Rather than send a second email on round-open, the **existing** two templates are enhanced so they carry the instructions + contact emails. The same template code is reused by both trigger paths below. One email per audience; one source of truth.
+
+### Content — Mentor version (coalesced per mentor, across their projects in the round)
+
+- Greeting by mentor name.
+- Optional custom note (rendered in an info box near the top) — only present on the manual reminder path.
+- For **each** assigned project: project title (linked) + the **team members listed with name + email**.
+- "How to mentor on MOPC" instructions block: where the workspace chat lives, file sharing, the mentor dashboard.
+- CTA → Mentor Dashboard.
+
+### Content — Team version (per project)
+
+- Greeting by recipient name.
+- Optional custom note (info box) — manual path only.
+- The assigned **mentor(s) listed with name + email**.
+- The team's **own members listed with email** (per decision: include teammates too).
+- "How to work with your mentor" instructions block: where the in-app chat is, how to reach the mentor, what to expect.
+- CTA → mentoring page.
+
+Both reuse `getEmailWrapper()` and existing helpers (`sectionTitle`, `paragraph`, `ctaButton`, `infoBox`, `escapeHtml`) for consistent branding.
+
+### Trigger path A — auto on round-open (existing flow, upgraded content)
+
+- `src/server/services/round-engine.ts` draft→active flow keeps its one-time semantics (`notificationSentAt` / `teamIntroducedAt` gating) and coalescing.
+- It now passes the additional data the upgraded templates need: team-member name+email for the mentor email, and mentor name+email + teammate emails for the team email.
+- No custom note on this path.
+
+### Trigger path B — manual reminder button (admin, on demand)
+
+- New `adminProcedure`: `mentor.sendMentorshipWelcome({ roundId, customNote?: string })`.
+ - Resolves **all current** active assignments for the round (`droppedAt: null`) → groups by mentor → sends mentor emails; resolves all projects with assignments → sends team emails to all members.
+ - **Ignores** `notificationSentAt` / `teamIntroducedAt` (deliberate re-send). Does **not** mutate those flags.
+ - Throttled + fire-and-forget like existing bulk sends; writes `NotificationLog` rows + a `DecisionAuditLog`/audit entry.
+ - Returns counts: `{ mentorCount, teamMemberCount, teamCount }` for the success toast.
+
+### Preview
+
+- New query: `mentor.previewMentorshipWelcome({ roundId, customNote?: string })` → `{ mentor: { subject, html }, team: { subject, html } }`.
+ - Calls the **same** template functions used by the real send.
+ - Picks a representative recipient: first mentor with assignments + first project/team in the round. If the round has none yet, returns clearly-labeled sample-data output so the layout is still previewable.
+- Rendered in the send dialog inside a sandboxed `