Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/anilburcu/claude-code-react-native/push-notificationsnpx skills add AnilBurcu/claude-code-react-native --skill push-notificationsgit clone --depth 1 https://github.com/AnilBurcu/claude-code-react-nativeWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00059 | $0.01012 |
| Opus 5 | $0.00030 | $0.00506 |
| Sonnet 5 | $0.00012 | $0.00202 |
| Haiku 4.5 | $0.00006 | $0.00101 |
Grade A, and why
push-notifications scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 55 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Push notifications that actually arrive
Pick a lane and stay in it
- Expo push service (expo-notifications with ExpoPushToken): easiest server story, one API for both platforms, good default for most apps.
- Direct FCM / APNs (device tokens, often with notifee for rich display): full control, more moving parts, needed for some advanced delivery cases.
The classic self-inflicted wound is mixing lanes: registering an Expo push token but sending through FCM directly, or vice versa. A token only works with the service it belongs to. Decide once, document it in the repo, and delete the code paths of the other lane.
Credentials
iOS (APNs)
- Use an APNs key (.p8), not certificates. One key serves all your apps and does not expire annually.
- The key lives in EAS credentials (or your own server if sending directly). Missing or wrong-team keys produce zero delivery with no client-side error, which is why iOS push debugging starts at the credentials screen, not in code.
- Simulators receive real APNs sandbox pushes on Apple Silicon and T2 Macs (macOS 13+, Xcode 14+), with their own simulator-specific token. Hardware is only required for production-APNs behavior and older Intel Macs.
simctl pushadditionally covers pure display-logic testing with a local payload.
Android (FCM)
- google-services.json must match the applicationId exactly, including build-variant suffixes like
.dev. - Sending through Expo requires uploading an FCM V1 service account key to EAS. The legacy FCM server key era is over;
InvalidCredentialsor 403 responses on Android almost always mean the V1 service account step was skipped.
Client-side checklist
- Ask permission at a sensible moment, not at cold start. Denied-once is expensive to recover from on both platforms.
- Foreground behavior is opt-in: without a foreground handler that says "show it", notifications arriving while the app is open appear to vanish. This is the most reported "bug" that is not a bug.
- Android channels: importance and sound are fixed at channel creation and cannot be changed by shipping new code. Users can change them; you cannot. If you shipped a channel with wrong importance, create a new channel id and migrate.
- Token lifecycle: tokens rotate on reinstall, restore and app data clear. Register the current token on every app start, tied to the signed-in user, and de-duplicate server-side.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 55 lines · 59 tokens per session scan A 7b33557743b7
push-notifications is a skill published in the GitHub repository AnilBurcu/claude-code-react-native (3 stars, last pushed 1mo ago), licensed MIT. It adds 59 tokens to every session and 1,012 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
uniwind
Uniwind — Tailwind CSS v4 styling for React Native. Use when adding, building, or debugging components in a React Native project that uses Uniwind classNames. Covers setup, Metro config, global.css, theming, className props, accent- color props, platform/data/state/responsive variants, CSS variables, custom utilities…
setup-react-native-storybook
Set up Storybook for React Native in Expo, React Native CLI, or Re.Pack projects. Use when adding Storybook to a project, configuring metro.config.js with withStorybook, creating .rnstorybook configuration files, setting up Storybook routes in Expo Router, configuring getStorybookUI, or adding the StorybookPlugin to a…
upgrading-react-native-storybook
Incrementally upgrade React Native Storybook across the supported migration paths. Use when upgrading @storybook/react-native projects from 5.3.x to 6.5.x, 6.5.x to 7.6.x, 7.6.x to 8.3.x, 8.x to 9.x, or 9.x to 10.x. Detect the currently installed Storybook version, choose only the next migration step, update…
migrate-nativewind-to-uniwind
Migrate a React Native project from NativeWind to Uniwind. Use when the user wants to replace NativeWind with Uniwind, upgrade from NativeWind, switch to Uniwind, or mentions NativeWind-to-Uniwind migration. Handles package removal, config migration, Tailwind 4 upgrade, cssInterop removal, theme conversion, and all…
unistyles-v2-to-v3-migration
Migrate react-native-unistyles from v2 to v3. Triggers on: "migrate unistyles", "upgrade unistyles", "v2 to v3", "unistyles migration", "update unistyles", "convert unistyles v2". Covers all API changes including StyleSheet.create, useStyles removal, theme configuration, variants, withUnistyles, Babel plugin setup…
react-native-unistyles-v3
Guide for using react-native-unistyles v3. Triggers on: "unistyles", "StyleSheet.create", "create stylesheet", "add theme", "breakpoints", "variants", "withUnistyles", "useUnistyles", "ScopedTheme", "UnistylesRuntime", "style component", "responsive styles", "media queries", "dynamic styles", "scoped theme", "adaptive…