sales-in-app-messaging
In-app messages and content cards — onboarding, feature announcements, surveys, promotions, persistent content feeds. Covers strategy, design, triggering, and analytics across Braze, Iterable, Intercom, Pendo, Appcues, Customer.io, MoEngage, Whatfix and Chameleon. Use when users aren't completing onboarding, in-app messages have low engagement, not sure which in-app messaging tool to pick, feature announcements go unnoticed, employees aren't adopting enterprise software, or unsure whether to use in-app messages vs push vs email for a use case. Do NOT use for push notifications (use /sales-push-notification), email marketing (use /sales-email-marketing), live chat widgets (use /sales-live-chat), or cold outbound (use /sales-cadence). For Braze-specific help, use /sales-braze.
What this skill does
# In-App Messages & Content Cards Help the user with in-app messaging — from strategy and message type selection through trigger design, content cards, onboarding flows, and analytics. This skill is tool-agnostic but includes platform-specific guidance for Braze, Iterable, Intercom, Pendo, Appcues, Customer.io, MoEngage, Whatfix and Chameleon. ## Step 1 — Gather context If `references/learnings.md` exists, read it first for accumulated knowledge. Ask the user: 1. **What do you need help with?** - A) Strategy — planning an in-app messaging program - B) Onboarding — new user walkthroughs, tooltips, feature tours - C) Feature announcements — introducing new features to existing users - D) Promotions — in-app offers, upsells, upgrade prompts - E) Surveys / feedback — collecting user input within the app - F) Content cards / inbox — persistent content feed design - G) Tool selection — choosing an in-app messaging platform - H) Triggering — when and how to show in-app messages - I) Analytics — measuring in-app message effectiveness - J) Something else — describe it 2. **What type of app?** - A) Mobile app (iOS/Android) - B) Web app (SaaS) - C) Both mobile and web - D) E-commerce app - E) Gaming 3. **What tool are you using (or considering)?** - A) Braze - B) Iterable - C) Intercom - D) Pendo - E) Appcues - F) Customer.io - G) MoEngage - H) Whatfix - I) Chameleon - J) Not decided yet - K) Other **If the user's request already provides most of this context, skip directly to the relevant step.** Lead with your best-effort answer using reasonable assumptions (stated explicitly), then ask only the most critical 1-2 clarifying questions at the end. ## Step 2 — Strategy and approach ### In-app message types | Type | Best for | Display | Duration | |---|---|---|---| | **Modal** | Important announcements, permission requests, promotions | Center of screen, blocks interaction | Until dismissed | | **Slideup / Banner** | Lightweight notifications, success confirmations | Top or bottom of screen, non-blocking | Auto-dismiss or swipe | | **Fullscreen** | Major announcements, onboarding steps, surveys | Covers entire screen | Until dismissed | | **Tooltip / Hotspot** | Feature discovery, contextual help | Points to a specific UI element | Until dismissed or after delay | | **Carousel / Tour** | Multi-step onboarding, feature walkthroughs | Sequence of screens/modals | Until completed | | **Content Card** | Persistent promotions, notification inbox, recommendations | In a dedicated feed/section of the app | Until expired or dismissed | | **Custom HTML** | Complex interactive experiences, mini-games, embedded forms | Custom placement | Custom | | **Survey** | NPS, CSAT, feature requests, feedback | Modal or fullscreen | Until submitted | ### When to use in-app vs other channels | Scenario | Best channel | Why | |---|---|---| | User is active in the app right now | **In-app message** | Immediate, contextual, no permission needed | | User hasn't opened the app in days | **Push notification** | Brings them back to the app | | Long-form content or tutorial | **Email** | More space, user can read at their pace | | Time-sensitive alert for inactive user | **Push + SMS** | Reaches them outside the app | | Persistent content they can revisit | **Content Card** | Stays in their feed until they engage | | Feature announcement for web SaaS | **In-app + email** | In-app for active users, email for others | ### Trigger design principles 1. **Trigger on context, not time** — show a message when the user is on the relevant screen/feature, not just "after 5 seconds" 2. **Event-based triggers**: Session start, specific screen visited, custom event (completed purchase, used feature X times), reached milestone 3. **Behavioral conditions**: Only show to users who haven't used feature X yet, or who are on free plan, or who signed up > 7 days ago 4. **Display limits**: Show once per session, once per lifetime, once per week — avoid message fatigue 5. **Priority and queue**: If multiple messages could trigger at once, define priority order (onboarding > promotion > survey) ### Onboarding best practices 1. **Progressive disclosure** — don't show everything on first session. Introduce features as users reach them. 2. **Contextual tooltips > walkthroughs** — pointing at the actual UI element they should use is more effective than a 5-screen tutorial they'll skip 3. **Action-triggered, not time-triggered** — show the next onboarding step when they complete the previous one 4. **Allow skip** — always provide a dismiss/skip option. Forced walkthroughs create resentment. 5. **Measure completion** — track how many users finish each onboarding step, not just "saw the message" 6. **Empty states** — when a feature has no data yet, use the empty state as an in-app message explaining what to do ## Step 3 — Platform-specific guidance For platform-specific in-app messaging guidance (Braze, Iterable, Intercom, Pendo, Appcues, Customer.io, MoEngage, Whatfix, Chameleon), **read `references/platforms.md`**. Answer using only the section relevant to the user's tool. ## Step 4 — Actionable guidance ### Implementation checklist 1. **Define use cases** — list every scenario where in-app messaging adds value (onboarding, feature adoption, promotions, surveys) 2. **Choose message types** — match each use case to the right format (modal, tooltip, content card, etc.) 3. **Design triggers** — for each message, define the event/condition that shows it 4. **Set display limits** — how often can each message show (once ever, once per session, etc.) 5. **Build templates** — create reusable designs in your tool's editor 6. **Define priority** — if multiple messages could trigger, which one wins? 7. **Test** — preview on all target devices (iOS, Android, web, dark mode) 8. **Launch to small segment** — roll out to 10% of users first, check metrics 9. **Measure** — impression rate, click rate, dismiss rate, goal completion 10. **Iterate** — A/B test messaging, timing, and design ### Key metrics | Metric | Benchmark | What it tells you | |---|---|---| | Impression rate | 30-60% of eligible users | Trigger design effectiveness | | Click/action rate | 15-30% | Message relevance and CTA quality | | Dismiss rate | 20-40% | Message value vs annoyance | | Onboarding completion | 40-70% | Flow design and motivation | | Feature adoption (post-message) | 10-25% increase | Impact of feature announcements | | Survey response rate | 15-30% | Survey design and timing | ## Gotchas 1. **Don't show modals on app launch** — a fullscreen modal the moment the app opens feels aggressive. Wait for a meaningful trigger (screen visit, completed action, X sessions). Exception: critical announcements (terms of service change, mandatory update). 2. **Don't stack multiple messages** — if a user triggers 3 in-app messages at once, show only the highest-priority one. Most tools have queue/priority settings — use them. Multiple simultaneous popups = instant dismissal. 3. **Content Cards are not push notifications** — Content Cards sit passively in a feed. Users must open the feed to see them. Don't use Content Cards for time-sensitive messages that need to interrupt the user. Use push or in-app modals for urgency. 4. **In-app messages require the app to be open** — unlike push or email, in-app messages only reach users who are already in your app. For dormant users, in-app messaging is useless. Use push to bring them back, then in-app to engage them. 5. **Web SaaS tooltips break on UI changes** — if you position a tooltip on a specific button and then redesign the page, the tooltip points to nothing. Use tools with visual editors (Pendo, Appcues) that automatically detect UI changes, or tie tooltips to CSS selectors that are stable. - **Self-improving**: If you discover something not covered here, append it to `references/learnings.md` with today's date.
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.