From alemtuzlak-skills
Use when the user wants to write a product update email, feature announcement newsletter, or digest email for users or subscribers
npx claudepluginhub alemtuzlak/skills --plugin alemtuzlak-skillsThis skill uses the workspace's default tool permissions.
Write product update emails and feature announcement newsletters. Handles subject lines, preview text, email structure, and audience-appropriate content.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Analyzes competition with Porter's Five Forces, Blue Ocean Strategy, and positioning maps to identify differentiation opportunities and market positioning for startups and pitches.
Share bugs, ideas, or general feedback.
Write product update emails and feature announcement newsletters. Handles subject lines, preview text, email structure, and audience-appropriate content.
Resolve the argument (if provided) in this order:
.md containing "Executive Summary" or "Key Messages") -> marketing brief.md with blog post structure) -> blog post.md with Added/Fixed/Changed sections or CHANGELOG.md) -> changelog#\d+ pattern -> PR... or .. -> git ref rangeIf no argument is provided, ask: "What should the newsletter cover? You can provide a marketing brief, blog post, changelog, PR URL/number, git ref range, file/directory path, or just describe the update."
If multiple interpretations match, confirm with the user.
digraph newsletter {
rankdir=TB;
"Resolve input" [shape=box];
"Phase 1: Discovery" [shape=box];
"Phase 2: Configure" [shape=box];
"Phase 3: Write" [shape=box];
"Phase 4: Review" [shape=box];
"Approved?" [shape=diamond];
"Phase 5: Output" [shape=box];
"Resolve input" -> "Phase 1: Discovery";
"Phase 1: Discovery" -> "Phase 2: Configure";
"Phase 2: Configure" -> "Phase 3: Write";
"Phase 3: Write" -> "Phase 4: Review";
"Phase 4: Review" -> "Approved?";
"Approved?" -> "Phase 3: Write" [label="revisions"];
"Approved?" -> "Phase 5: Output" [label="yes"];
}
Do NOT skip phases. Ask questions at a natural pace. If the user answers multiple questions at once, accept bundled answers and skip ahead.
If the user says "just pick defaults", "you choose", or similar, pick reasonable defaults based on context, state what you chose, and ask for a single confirmation before proceeding.
Never assume without confirming.
| Input type | What to read |
|---|---|
| Marketing brief | Extract problem statement, value prop, audience, key messages. Skip to Step 3. Still do Step 2 if brief lacks product context. |
| Blog post | Extract headline, key points, audience, CTA. Skip to Step 3. Still do Step 2 if lacking product context. |
| Changelog | Extract all entries. Use as the basis for a digest email. Skip to Step 3. |
| PR | Diff, PR description, review comments, commit messages (gh pr view, gh pr diff). For large PRs (20+ files), focus on user-facing changes. |
| Git refs | git diff and git log between refs. For large ranges, prioritize commit messages and user-facing changes. |
| Codebase feature | Read the specified files/directories. |
| Freeform text | Parse the user's description. If it lacks specifics, ask the user to provide more detail or point to a specific file/PR. Fall back to open-ended questions only if they can't. |
User-facing changes include: new features, UI changes, API changes, performance improvements, bug fixes, and documentation updates. Internal changes include: refactors, test additions, CI changes, and dependency bumps. When uncertain, list what you found and ask the user which are relevant.
Error handling:
gh not available -> inform user, suggest gh auth login, offer alternative inputRead if they exist: README, docs/, package.json (or equivalent).
If nothing found, ask: "I couldn't find product context in the repo. Can you briefly describe the product and who it's for?"
Present a structured summary:
"Here's what I'll base the newsletter on:"
- Update A - short description
- Update B - short description
"Anything to add, remove, or correct?"
Then determine the email format based on the number of updates:
Confirm the format with the user.
If no user-facing changes are found in the input, tell the user and stop: "No user-facing changes found in this input. Nothing to write a newsletter about."
Do NOT proceed until the user confirms scope and format.
Ask these questions:
Q1 - Audience: "Who is this email going to?" (all users, power users, new users, specific plan tier, developers, non-technical users, other)
Q2 - Output format: "What format do you want the email in?"
Q3 - Tone: Read existing repo content (README, docs, blog posts) to detect the product's voice. Then confirm:
"Based on your existing content, the tone seems [e.g. conversational and developer-friendly]. Should I match that or go a different direction?"
If no existing content to analyze, ask directly what tone the user wants.
Q4 - CTA: Infer the most appropriate call to action from context:
"I'd suggest the CTA be: [inferred CTA]. Want to go with that or something different?"
Generate 3-5 subject line options with different approaches:
Recommend one and explain why it works best. Also explain the trade-offs of the others.
Rules:
Generate preview text for each subject line option. Preview text is the secondary line visible in inbox previews.
Rules:
Single feature email structure:
<!-- TODO: Add screenshot or GIF showing the feature in action --> with a description of what to captureDigest email structure:
After generating the primary email, ask:
"Want me to generate variants for different audience segments? (e.g. a more technical version for developers, a simpler version for non-technical users)"
If yes, generate the requested variants, adjusting tone, depth, and feature emphasis per segment.
Present the complete email:
"Here's the newsletter:"
Subject line options: (with recommendation and preview text for each)
- Subject: "..." / Preview: "..."
- Subject: "..." / Preview: "..."
- Subject: "..." / Preview: "..."
Body: [full email content]
"Pick a subject line and let me know if you want any changes."
Wait for the user to select a subject line and approve or request revisions. Only proceed to output once approved.
Always print the final approved email to terminal.
Then ask: "Want me to save this to emails/<slug>.md? Or a different path?"
Create the directory if it doesn't exist. If file already exists, ask whether to overwrite or create a versioned copy.
gh not available -> inform user, offer alternative inputemails/, create it/blog-post or /social-copy)