skenetechnologies/plg-skills/in-product-messaging

Claude Code and agent skill by skenetechnologies/plg-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

When the user wants to design in-product messages -- including tooltips, banners, modals, slideouts, or notification bells -- without annoying users. Also use when the user says "in-app messages," "product announcements," "nudges," "contextual help," or "message frequency." For upgrade prompts specifically, see paywall-upgrade-cro. For feature launches, see feature-adoption.

Install

npx vskill@latest install skenetechnologies/plg-skills/in-product-messaging

SKILL.md

In-Product Messaging

You are an in-product messaging specialist. Communicate with users inside your product to drive adoption, engagement, and expansion without creating annoyance. Every message is a trade: you borrow the user's attention and must repay it with value.


1. Diagnostic Questions

Before designing an in-product message or campaign, answer these:

  1. What is the goal of this message? (Awareness, activation, adoption, upgrade, retention, announcement)
  2. Who should see this message? (All users, specific segment, specific lifecycle stage)
  3. When should they see it? (Immediately, after trigger, at specific time, on specific page)
  4. How urgent is this information? (Critical / Important / Nice-to-know)
  5. How interruptive can this message be? (Must not interrupt / Can briefly interrupt / Can require action)
  6. What should the user do after seeing this message? (Click, dismiss, navigate, upgrade, nothing)
  7. How will you measure success? (Engagement rate, conversion, feature adoption, dismiss rate)
  8. What happens if the user misses this message entirely? (If nothing bad, consider whether you need it at all)

Codebase Audit (Optional)

If you have access to the user's codebase, analyze it before asking diagnostic questions. Use findings to pre-fill answers and focus recommendations on what actually exists.

  1. Find messaging components: Search for *toast*, *banner*, *modal*, *tooltip*, *notification*, *alert*, *snackbar*, *slideout*
  2. Check for messaging libraries: Search imports for react-toastify, sonner, notistack, intercom, appcues, pendo, userflow, chameleon
  3. Find in-app announcements: Search for announcement, whats-new, changelog, release-notes, feature-update
  4. Check notification bell/inbox: Search for notification-bell, inbox, notification-center, notification-list
  5. Find contextual help: Search for help-text, info-icon, learn-more, documentation-link, contextual tooltip triggers
  6. Check targeting logic: Search for conditional message rendering -- user role, plan, usage, behavior-based targeting
  7. Find frequency/suppression logic: Search for dismissed, seen, do-not-show, snooze, frequency, cooldown
  8. Check message analytics: Search for tracking on message impressions, clicks, dismissals

Report: inventory all in-product messaging touchpoints, their types, targeting, and any frequency management.

For a full growth audit, install skene-skills to generate a structured growth manifest you can reference alongside this skill.


2. Message Types Reference

TypeUse CaseKey SpecsConstraints
TooltipNew feature intro, contextual guidance250-320px wide, headline (6-8 words) + body (1-2 sentences) + CTAOne auto-triggered per page, 500-1000ms delay
BannerAnnouncements, warnings, upgrade prompts40-56px height, one sentence + CTAOne at a time, priority queue if multiple
ModalImportant decisions, onboarding, upgrades400-800px wide (or full-screen)Max one per session, always include close/dismiss
SlideoutFeature details, contextual help, guided workflows320-480px wide, slides from right edgeInclude clear header with close button
InlineContextual suggestions, inline upgrade promptsCard-style within content areaMax 1-2 visible per page
Bottom BarPersistent CTAs, cookie consent48-72px height, fixed to viewport bottomX button or CTA to dismiss
Notification BellAsync updates, activity feeds, announcementsBadge with unread count, dropdown or slideoutSeparate by type, mark-as-read on view
Empty StateFirst-time feature use, empty dashboardsIllustration + headline + description + CTAShow what area looks like when populated

Banner subtypes: Informational (Blue/Gray), Success (Green), Warning (Yellow/Orange), Error/Critical (Red), Upgrade (Brand color)

Modal subtypes: Small/Confirmation (400-480px), Medium/Standard (500-640px), Large/Showcase (700-800px), Full-screen (100%)


3. Message Type Decision Matrix

Use urgency (how time-sensitive) and importance (how impactful) to select the right format:

Low ImportanceMedium ImportanceHigh Importance
Low UrgencyInline message, Notification bellTooltip, Bottom barBanner (dismissible)
Medium UrgencyTooltip, Inline messageBanner, SlideoutModal (small)
High UrgencyBanner (info)Modal (medium)Modal (large), Full-screen

Interruptiveness scale (least to most):

  1. Notification bell (user pulls information)
  2. Inline message (passive, in-flow)
  3. Empty state (only seen when area is empty)
  4. Tooltip (small, contextual)
  5. Bottom bar (persistent but peripheral)
  6. Banner (visible but non-blocking)
  7. Slideout (partial overlay)
  8. Modal (full overlay, requires action)
  9. Full-screen (total takeover)

4. Message Targeting

4.1 Targeting Dimensions
DimensionExamplesUse Case
User segmentFree, trial, paid, enterpriseDifferent messaging by plan
Usage behaviorPower user, casual, dormantEngagement-based messaging
Lifecycle stageNew, activated, engaged, at-riskStage-appropriate nudges
Feature usageUsed feature X, never used feature YFeature adoption campaigns
Role/personaAdmin, member, viewerRole-specific guidance
Geography/languageRegion, localeLocalized messaging
Device/platformDesktop, mobile, tabletPlatform-appropriate format
Time-basedDays since signup, days since last visitTenure-based messaging
4.2 Targeting Rules Template
Message: [Message name]
Show when ALL conditions are true:
- User segment: [e.g., Free plan users]
- Lifecycle stage: [e.g., Activated but not yet power user]
- Feature usage: [e.g., Has NOT used [feature] in last 30 days]
- Tenure: [e.g., Signed up more than 7 days ago]
- Behavior: [e.g., Currently viewing [page/feature]]
- Previous messages: [e.g., Has NOT seen [other message] in last 7 days]
- Impression cap: [e.g., Show maximum 3 times total]

5. Frequency Management

Frequency mismanagement is the number one cause of in-product messaging failure. Users who feel bombarded disengage or churn.

5.1 Impression Caps
Cap TypeRuleExample
Per-message capMax N times total per userShow feature tooltip max 3 times
Per-message cooldownMin X days between showingsDon't reshow for 7 days after dismiss
Global session capMax N messages per sessionMax 2 messages per session across all campaigns
Global daily capMax N messages per dayMax 3 messages per day
Global weekly capMax N new messages per weekMax 5 new messages per week
5.2 Priority Queuing

When multiple messages qualify to be shown, use a priority system:

Priority levels:
1. Critical (system alerts, payment failures, security) -- Always show
2. High (trial expiry, usage limits, blocking issues) -- Show if no critical
3. Medium (feature adoption, tips, announcements) -- Show if slot available
4. Low (engagement prompts, surveys, minor updates) -- Show if no other messages
Rules:
- Only one modal-level message per session
- Only one banner at a time (highest priority wins)
- Tooltips can coexist with banners but not with modals
- Inline messages do not count toward session caps
5.3 Suppression Rules

Suppress messages when:

  • User just completed the action the message promotes (they already did it)
  • User is in the middle of a complex workflow (don't interrupt data entry, multi-step processes)
  • User dismissed this message or similar message recently
  • User just experienced an error or frustrating moment (don't pile on)
  • User is in a support conversation or help flow

6. Message Sequencing

6.1 Multi-Step Campaigns

For complex goals (onboarding, feature adoption), use sequenced messages:

Campaign: [Campaign Name]
Goal: [What user should accomplish by end of sequence]
Step 1: [Message type] -- [Content summary]
Trigger: [When to show]
Success: [User action that advances to step 2]
Timeout: [Days before abandoning sequence]
Step 2: [Message type] -- [Content summary]
Trigger: [After step 1 success OR after X days]
Success: [User action that advances to step 3]
Timeout: [Days before abandoning sequence]
Step 3: [Message type] -- [Content summary]
Trigger: [After step 2 success]
Success: [Goal completion]
Exit conditions:
- User completes goal at any point → exit, show success message
- User dismisses N times → exit, do not reshow
- Timeout exceeded → exit, add to fallback segment
6.2 Progressive Messaging

Gradually increase message specificity and urgency:

  1. Awareness: Tooltip or inline message introducing feature existence
  2. Education: Slideout or banner explaining feature value with examples
  3. Activation: Modal or inline CTA with guided first-use flow
  4. Reinforcement: Success message after first use, follow-up tips

7. Personalization

7.1 Dynamic Content Variables

Use user data to personalize message content:

VariableSourceExample Usage
{user.first_name}User profile"Hey {first_name}, have you tried..."
{user.plan}Billing"Upgrade from {plan} to unlock..."
{user.projects_count}Usage data"You've created {projects_count} projects!"
{user.team_size}Team data"Your team of {team_size} could benefit from..."
{user.days_since_signup}Signup date"It's been {days} days since you joined"
{feature.name}Context"Try {feature.name} to speed up your workflow"
{usage.top_feature}Analytics"Since you love {top_feature}, you'll love..."
7.2 Conditional Content Blocks
IF user.plan == "free" AND user.projects_count > 5:
Show: "You're a power user on the free plan! Upgrade to Pro for unlimited projects."
ELSE IF user.plan == "free" AND user.projects_count <= 5:
Show: "Create more projects and explore what [Product] can do."
ELSE IF user.plan == "pro" AND user.team_size == 1:
Show: "Invite your team to collaborate in real-time."

8. Copy Guidelines

Principles: Headline-first (80% only read headlines), action-oriented, benefit-focused, never guilt-trip, reference current context.

Copy Templates by Goal

Feature Announcement:

Headline: New: [Feature Name] is here
Body: [One sentence on what it does and why it matters to THIS user]
CTA: Try it now | Learn more
Dismiss: Got it | X

Feature Adoption Nudge:

Headline: [Benefit statement -- e.g., "Save time with keyboard shortcuts"]
Body: [1-2 sentences on how to use it, referencing user's current workflow]
CTA: Show me how | Try it
Dismiss: Not now | X

Upgrade Prompt:

Headline: [Value statement tied to current action]
Body: [What they'd unlock, framed as outcome]
CTA: See plans | Upgrade
Dismiss: Maybe later | X

System Notification:

Headline: [Clear, factual statement of what happened/is happening]
Body: [What the user needs to know or do, if anything]
CTA: [Action if needed] | Dismiss
8.3 Word Count Guidelines
Message TypeHeadlineBodyCTA
Tooltip3-8 words10-25 words2-4 words
Banner5-12 words0-15 words2-4 words
Modal4-10 words20-80 words2-5 words
Slideout4-10 words50-200 words2-5 words
Inline5-12 words15-40 words2-4 words

9. Accessibility

In-product messages must be accessible to all users.

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
17
Repository forks
1
7-day trend score
14

Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 6 May 2026, 6 months ago.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/skenetechnologies/plg-skills/in-product-messaging/badge)](https://verified-skill.com/skills/skenetechnologies/plg-skills/in-product-messaging)

Something wrong with this skill or its page? Tell us.