npx claudepluginhub glincker/featuredropThis skill uses the workspace's default tool permissions.
Open-source, zero-dependency library for in-app feature discovery. < 3 kB core.
Adds PostHog feature flags to gate new functionality for safe rollouts. Use after feature implementation or PR reviews. Handles initial SDK setup if needed.
Guides FeatBit users through initial setup, boolean and multi-variant flag creation, Dino Game demo interaction, and basic SDK integration. For getting started tutorials and first flags.
Integrates OpenFeature SDK for vendor-agnostic feature flags with standardized API, covering Node.js installation, evaluation, providers, and hooks for A/B testing and canary releases.
Share bugs, ideas, or general feedback.
Open-source, zero-dependency library for in-app feature discovery. < 3 kB core.
npm install featuredrop[{ id, label, description, releasedAt, showNewUntil? }]<FeatureDropProvider manifest={features} storage={new LocalStorageAdapter()}>// Core (no React, no UI)
import { isNew, getNewFeatures, createManifest, LocalStorageAdapter } from 'featuredrop'
// React components (ready-made UI)
import { NewBadge, ChangelogWidget, Tour, Checklist, Banner, Toast } from 'featuredrop/react'
// Headless hooks (data + actions, no JSX — for custom design systems / shadcn)
import { useChangelog, useNewFeature, useNewCount, useTour, useChecklist } from 'featuredrop/react/hooks'
// Storage adapters
import { PostgresAdapter, RedisAdapter, IndexedDBAdapter, HybridAdapter } from 'featuredrop/adapters'
// Validation
import { validateManifest } from 'featuredrop/schema'
// Testing helpers
import { createMockManifest, createMockStorage, TestProvider } from 'featuredrop/testing'
// Tailwind plugin
import { featureDropPlugin } from 'featuredrop/tailwind'
| Hook | Returns |
|---|---|
useNewFeature(id) | { isNew, feature, dismiss } |
useNewCount() | number — unread badge count |
useChangelog() | { features, newFeatures, newCount, dismiss, dismissAll, markAllSeen, getByCategory } |
useTour(id) | { currentStep, stepIndex, totalSteps, isActive, start, next, prev, skip, complete, goTo } |
useChecklist(id) | { tasks, completedCount, totalCount, progress, isComplete, completeTask, resetTask } |
useSurvey(id) | { isVisible, questions, submit, askLater, dismiss } |
useFeatureDrop() | Full provider context (features, count, dismiss, throttle controls, engine) |
useTabNotification() | Browser tab title: "(3) My App" |
NewBadge, ChangelogWidget, ChangelogPage, Tour, Checklist, Spotlight, SpotlightChain, Hotspot, TooltipGroup, Banner, Toast, AnnouncementModal, Survey, FeedbackWidget, FeatureRequestButton, FeatureRequestForm
{
id: string // unique identifier
label: string // display title
description: string // what changed
releasedAt: string // ISO date
showNewUntil?: string // ISO date — auto-expire badge
category?: string // group: "ui", "api", "billing"
type?: string // "feature" | "improvement" | "fix" | "deprecation"
priority?: string // "low" | "medium" | "high" | "critical"
cta?: { label: string; url: string }
audience?: Record<string, string[]> // user segmentation
}
Default: LocalStorageAdapter (browser). Server: PostgresAdapter, RedisAdapter.
Offline: IndexedDBAdapter. Hybrid: HybridAdapter (local + remote sync).
Custom: implement { getWatermark, setWatermark, getDismissedIds, addDismissedId }.
<FeatureDropProvider
manifest={features} // required
storage={adapter} // required
analytics={{ onFeatureSeen, onFeatureDismissed, onFeatureClicked }}
userContext={{ plan, role, region }} // for audience targeting
appVersion="2.1.0" // semver gating
throttle={{ maxToastsPerSession: 3, modalCooldownMs: 120_000 }}
locale="en" // i18n (en/es/fr/de/pt/zh-cn/ja/ko/ar/hi)
animation="normal" // "none" | "subtle" | "normal" | "playful"
engine={engineInstance} // optional: FeatureDropEngine for smart delivery
/>
// tailwind.config.ts
import { featureDropPlugin } from 'featuredrop/tailwind'
export default {
plugins: [featureDropPlugin({ prefix: 'fd' })],
}
// Adds: fd-badge, fd-badge-dot, fd-badge-count, fd-animate-pulse, fd-animate-fade-in
// CSS vars: --fd-new, --fd-changelog-bg, --fd-tour-bg (auto dark mode)
featuredrop/react, not just featuredrop)featuredrop/react/hooks when the project uses shadcn, Radix, or custom design systemshowNewUntil — don't build manual expiry logicany types