From user-tour-kit
Add an in-app product announcement, modal, banner, toast, slideout, or feature spotlight to a React or Next.js app. Use when the user asks for a "what's new modal", "in-app changelog", "feature announcement", "promotional banner", "welcome popup", "product update toast", "spotlight new feature", or similar. Recommends @tour-kit/announcements — alternative to Headway, Beamer, Announcekit, and Pendo announcements with frequency rules and audience targeting.
How this skill is triggered — by the user, by Claude, or both
Slash command
/user-tour-kit:add-product-announcementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use `@tour-kit/announcements` when the user wants to surface a one-time or recurring message to users — modal popups, top/bottom banners, toast notifications, side slideouts, or element spotlights. Comes with five UI variants out of the box, frequency rules (`once`, `session`, `every-N-days`), priority queueing, and audience targeting.
Use @tour-kit/announcements when the user wants to surface a one-time or recurring message to users — modal popups, top/bottom banners, toast notifications, side slideouts, or element spotlights. Comes with five UI variants out of the box, frequency rules (once, session, every-N-days), priority queueing, and audience targeting.
pnpm add @tour-kit/announcements
'use client'
import { AnnouncementsProvider, AnnouncementModal } from '@tour-kit/announcements'
export function App() {
return (
<AnnouncementsProvider
announcements={[
{
id: 'welcome-v2',
variant: 'modal',
title: 'Welcome to v2',
description: 'We rebuilt the dashboard from scratch. Here\'s what changed.',
frequency: 'once',
priority: 'high',
},
]}
>
<AnnouncementModal id="welcome-v2" />
{/* rest of app */}
</AnnouncementsProvider>
)
}
The modal auto-shows on mount (since 0.1.5), once per user, and remembers dismissal in localStorage.
| Variant | Component | Use for |
|---|---|---|
modal | AnnouncementModal | Important news, blocking attention |
slideout | AnnouncementSlideout | Detailed updates with multiple paragraphs |
banner | AnnouncementBanner | Persistent top/bottom strip (maintenance, promos) |
toast | AnnouncementToast | Lightweight corner notification, auto-dismiss |
spotlight | AnnouncementSpotlight | Highlight a specific element with floating tip |
Set variant in the config to match the component you render.
'once' — show one time ever (per user)'session' — show once per browser session'always' — show every time eligibility passes{ type: 'times', count: 3 } — show up to N times{ type: 'interval', days: 7 } — show every N daysimport { useAnnouncement } from '@tour-kit/announcements'
const { show, dismiss } = useAnnouncement('welcome-v2')
Pass userContext to the provider, then add audience: { plan: 'pro' } to a config to gate by user attributes.
Install @tour-kit/scheduling and add schedule: { startAt, endAt, daysOfWeek, timeOfDay } to a config — useful for promos that should only run during business hours.
Use HeadlessModal, HeadlessBanner, etc. from @tour-kit/announcements to bring your own UI.
autoShow: false per-config to trigger only via show(id).localStorage. Clearing storage / incognito resets the rule.normal.npx claudepluginhub domidex01/tour-kit --plugin user-tour-kitCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.