Agent skill

Push Notification

by FerroxLabs in FerroxLabs/wayland

Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in…

Apache-2.0Auto-check passedMobile

Install Push Notification

skills CLI
$ npx skills add FerroxLabs/wayland --skill push-notification -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install FerroxLabs/wayland push-notification --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/software-engineering/push-notification .claude/skills/push-notification && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
push-notification
GitHub stars
608
Token cost
~4k tokens
SKILL.md length
570 words
Files
1
Skills in repo
1,194
Repo updated
First seen
Licence
Apache-2.0

At a glance

Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in…

  • The user asks about push notification
  • SKILL.md covers Overview, Architecture Overview, APNs Integration (iOS) and FCM Integration (Android), plus 8 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Push notification best practices

What it does

Push Notification is an agent skill from FerroxLabs/wayland. Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in strategies, and delivery optimization. Use when the user asks about push notification, push notification best practices, or needs guidance on push notification implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.

Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Mobile. It works with Android and iOS. The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.

When your agent uses it

  • The user asks about push notification
  • Push notification best practices
  • Needs guidance on push notification implementation
  • The user needs a different specialized skill

Example prompts

  • “/push-notification”

Requirements

  • Python 3
  • A credential in GROUP_KEY

What it can do on your machine

Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python, kotlin, json, swift and markdown).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Push Notification loads about 4k tokens when it runs. Until then it costs about 125 tokens; SKILL.md has 570 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~125
When it runs · the whole SKILL.md, loaded when a task matches
~4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 570 words, ~4,035 tokens.

Download SKILL.mdSave it as .claude/skills/push-notification/SKILL.md (or your agent's skills folder).
name
push-notification
description
Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in strategies, and delivery optimization. Use when the user asks about push notification, push notification best practices, or needs guidance on push notification implementation. Do NOT use when the user needs a different specialized skill or is asking about an unrelated technology domain.
license
Apache-2.0
metadata.author
foundry-skills
metadata.version
1.0.0
metadata.tags
mobile best-practices guide
metadata.category
software-engineering
metadata.subcategory
mobile-development
metadata.disclaimer
none
metadata.difficulty
intermediate

Push Notification Expert

Overview

This skill provides comprehensive expertise in designing, implementing, and optimizing push notification systems for mobile applications. It covers both Apple Push Notification service (APNs) and Firebase Cloud Messaging (FCM), from initial integration through advanced patterns like rich notifications, silent data sync, intelligent grouping, deep linking, scheduling strategies, analytics measurement, and user opt-in optimization.

Architecture Overview

Push Notification Flow
Notification Delivery Pipeline:

1. Device Registration
   App Launch → Request Permission → Register with OS → Receive Token
   → Send Token to Your Server → Store Token + User Association

2. Sending a Notification
   Business Event → Your Server → Provider (APNs / FCM) → OS → Device
   → Foreground: App handles display
   → Background: System displays notification
   → Not Running: System displays, app launched on tap

3. User Interaction
   Notification Displayed → User Taps → App Opens → Deep Link Route
   → Analytics: Delivery confirmed, Tap tracked, Conversion measured
Server-Side Architecture
Recommended Server Architecture:

┌─────────────┐     ┌──────────────┐     ┌─────────────┐
│  Business    │────▶│ Notification │────▶│  Provider    │
│  Logic       │     │  Service     │     │  Gateway     │
│  (triggers)  │     │  (queue +    │     │  (APNs/FCM)  │
└─────────────┘     │  templates)  │     └─────────────┘
                     └──────────────┘            │
                           │                     ▼
                     ┌──────────────┐     ┌─────────────┐
                     │  Token Store │     │  Device      │
                     # ... (condensed) ...
- Queue: RabbitMQ/SQS for reliable, ordered delivery
- Template Engine: Handlebars/Mustache for notification content
- Provider Gateway: Abstraction over APNs + FCM APIs
- Analytics Sink: Track delivery, opens, conversions

APNs Integration (iOS)

Server-Side APNs (HTTP/2 API)
python
# Python example using httpx for APNs HTTP/2
import httpx
import jwt
import time

class APNsClient:
    def __init__(self, key_id: str, team_id: str, private_key: str, sandbox: bool = False):
        self.key_id = key_id
        self.team_id = team_id
        self.private_key = private_key
        self.base_url = (
            # ... (condensed) ...
                headers=headers,
                json=payload,
            )
            return response.status_code, response.json() if response.status_code != 200 else None
APNs Payload Structure
json
{
  "aps": {
    "alert": {
      "title": "New Message",
      "subtitle": "From John",
      "body": "Hey, are you free for lunch today?"
    },
    "badge": 3,
    "sound": "default",
    "category": "MESSAGE_CATEGORY",
    "thread-id": "conversation-123",
    # ... (condensed) ...
  "conversation_id": "123",
  "sender_id": "user-456",
  "deep_link": "myapp://chat/123"
}
APNs Interruption Levels (iOS 15+)
LevelBehaviorUse Case
passiveNo sound, no screen wakeLow-priority updates
active (default)Sound, appears normallyStandard notifications
time-sensitiveBreaks through Focus modesDelivery updates, time-limited events
criticalSupersedes mute, plays soundRequires Apple entitlement, emergency only

FCM Integration (Android)

Server-Side FCM (HTTP v1 API)
python
import google.auth.transport.requests
from google.oauth2 import service_account
import httpx

class FCMClient:
    def __init__(self, service_account_file: str, project_id: str):
        self.project_id = project_id
        self.credentials = service_account.Credentials.from_service_account_file(
            service_account_file,
            scopes=["[reference URL]"]
        )
# ... (condensed) ...
        }
        async with httpx.AsyncClient() as client:
            response = await client.post(url, headers=headers, json={"message": message})
            return response.json()
FCM Message Structure
json
{
  "message": {
    "token": "device_token_here",
    "notification": {
      "title": "New Order",
      "body": "Your order #1234 has been shipped!"
    },
    "android": {
      "priority": "high",
      "notification": {
        "channel_id": "orders",
        # ... (condensed) ...
      "type": "order_shipped"
    }
  }
}

Notification Channels (Android 8+)

Channel Strategy
kotlin
// Define channels at app startup
class NotificationChannelManager(private val context: Context) {

    fun createChannels() {
        val manager = context.getSystemService(NotificationManager::class.java)

        val channels = listOf(
            NotificationChannel(
                "messages", "Messages",
                NotificationManager.IMPORTANCE_HIGH
            ).apply {
                # ... (condensed) ...

        manager.createNotificationChannels(channels)
    }
}
Channel Importance Mapping
ImportanceBehaviorUse Case
IMPORTANCE_MAXSound + heads-up + screen wakeIncoming calls
IMPORTANCE_HIGHSound + heads-upDirect messages
IMPORTANCE_DEFAULTSound + status barOrder updates
IMPORTANCE_LOWNo sound, status bar onlyPromotions
IMPORTANCE_MINNo sound, no status barSilent sync

Rich Notifications

iOS Notification Service Extension
swift
// NotificationServiceExtension/NotificationService.swift
class NotificationService: UNNotificationServiceExtension {
    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?

    supersede func didReceive(
        _ request: UNNotificationRequest,
        withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void
    ) {
        self.contentHandler = contentHandler
        bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent
# ... (condensed) ...
            completion(tmpURL)
        }.resume()
    }
}
Android Rich Notification Styles
kotlin
// Big picture notification
fun showImageNotification(context: Context, title: String, body: String, bitmap: Bitmap) {
    val notification = NotificationCompat.Builder(context, "orders")
        .setSmallIcon(R.drawable.ic_notification)
        .setContentTitle(title)
        .setContentText(body)
        .setStyle(
            NotificationCompat.BigPictureStyle()
                .bigPicture(bitmap)
                .bigLargeIcon(null as Bitmap?) // Hide large icon when expanded
        )
        # ... (condensed) ...
        .build()

    NotificationManagerCompat.from(context).notify(conversationId, notification)
}

Silent Notifications

Use Cases and Implementation
Silent Notification Use Cases:
├── Background data sync
├── Cache invalidation
├── Configuration updates
├── Location tracking updates
├── Badge count updates
├── Content pre-fetching
└── Token refresh triggers

Implementation Rules:
├── iOS: content-available: 1, no alert/sound/badge
# ... (condensed) ...
│   ├── Handled by FirebaseMessagingService
│   ├── App gets ~20 seconds in onMessageReceived
│   ├── High priority: wakes dozing device
│   └── Normal priority: may be deferred by Doze mode
swift
// iOS silent notification handling
func application(
    _ application: UIApplication,
    didReceiveRemoteNotification userInfo: [AnyHashable: Any],
    fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void
) {
    guard let type = userInfo["type"] as? String else {
        completionHandler(.noData)
        return
    }

    # ... (condensed) ...
    default:
        completionHandler(.noData)
    }
}

Notification Grouping

Grouping Strategy
Notification Grouping Rules:
├── Group by conversation (messaging apps)
│   └── thread-id (iOS) / group key (Android) = conversation ID
├── Group by category (e-commerce)
│   └── Orders, promotions, and account grouped separately
├── Group by sender (email/social)
│   └── All notifications from same person/account
├── Summary notification
│   ├── iOS: automatic summary with category
│   └── Android: setGroup() + summary notification with setGroupSummary(true)
└── Maximum visible: Show up to 4 individual, then collapse to summary
kotlin
// Android notification grouping
private val GROUP_KEY = "com.myapp.ORDERS"

fun showOrderNotification(order: Order) {
    // Individual notification
    val notification = NotificationCompat.Builder(context, "orders")
        .setSmallIcon(R.drawable.ic_order)
        .setContentTitle("Order ${order.id}")
        .setContentText(order.statusMessage)
        .setGroup(GROUP_KEY)
        .build()
# ... (condensed) ...
    val manager = NotificationManagerCompat.from(context)
    manager.notify(order.id.hashCode(), notification)
    manager.notify(0, summary) // Summary ID should be constant
}

Deep Linking from Notifications

Deep Link Flow:
Notification Tap → OS Opens App → App Reads Notification Data
→ Parse deep_link field → Route to correct screen

Deep Link Formats:
├── Custom scheme: myapp://orders/1234
├── Universal Links (iOS): [reference URL]
├── App Links (Android): [reference URL]
└── Deferred deep links: Store link + route after install

Implementation Checklist:
├── Parse deep link in notification tap handler
├── Handle cold start (app not running) deep links
├── Handle warm start (app in background) deep links
├── Handle foreground notification tap deep links
├── Queue deep link if auth required, execute after login
└── Track deep link attribution in analytics

Scheduling and Delivery Optimization

Send Time Optimization
Optimal Send Time Strategy:
├── Per-user timezone delivery
│   └── Send at 10 AM local time, not 10 AM server time
├── Per-user engagement window
│   ├── Track when each user opens the app
│   ├── Track when each user opens notifications
│   └── Send during their peak engagement window
├── Frequency capping
│   ├── Maximum 1 promotional notification per day
│   ├── Maximum 3 transactional notifications per hour
│   └── Maximum 5 total notifications per day (unless real-time messaging)
# ... (condensed) ...
└── Quiet hours
    ├── Default: No notifications 10 PM - 8 AM local time
    ├── Exception: Time-sensitive and transactional
    └── Let users configure their quiet hours

Opt-In Strategies

Permission Request Flow
Opt-In Strategy (maximize permission grant rate):

1. Pre-permission screen (before iOS system prompt)
   ├── Explain VALUE the user gets from notifications
   ├── Show example notifications visually
   ├── Use specific benefit: "Get notified when your order ships"
   ├── NOT generic: "We'd like to send you notifications"
   └── If user says "Not now" → Ask again after value delivery

2. Contextual permission request (at the right moment)
   ├── After placing first order → "Want delivery updates?"
   # ... (condensed) ...
   ├── Check notification permission status regularly
   ├── Show in-app banner: "Turn on notifications for [benefit]"
   ├── Provide deep link to Settings app
   └── Do NOT nag repeatedly
Measuring Notification Effectiveness
MetricFormulaTarget
Opt-in rateUsers with permission / Total users>60%
Delivery rateDelivered / Sent>95%
Open rateOpened / Delivered>5% (varies by type)
Conversion rateConversions / OpenedVaries by goal
Opt-out rateDisabled permissions / Total with permission<2% per month
Uninstall attributionUninstalls within 24h of notification / Total<0.1%

Analytics Implementation

python
# Server-side notification analytics tracking
class NotificationAnalytics:
    def track_sent(self, notification_id: str, user_id: str, channel: str):
        self.emit("notification.sent", {
            "notification_id": notification_id,
            "user_id": user_id,
            "channel": channel,  # "push", "email", "sms"
            "timestamp": utcnow(),
        })

    def track_delivered(self, notification_id: str, user_id: str):
        # ... (condensed) ...
            "notification_id": notification_id,
            "user_id": user_id,
            "action": action,  # "purchase", "signup", "view"
        })

Production Checklist

  • Implement APNs token registration and server sync
  • Implement FCM token registration and server sync
  • Handle token refresh (both platforms)
  • Create notification channels with appropriate importance (Android)
  • Implement rich notifications with images (both platforms)
  • Set up deep linking from notification taps
  • Handle cold start, warm start, and foreground notification scenarios
  • Implement notification grouping / threading
  • Set up delivery and open rate analytics
  • Design pre-permission screen for iOS
  • Implement frequency capping on the server
  • Configure timezone-aware delivery scheduling
  • Test notification display on various OS versions
  • Handle notification permission denied gracefully
  • Set up token cleanup for uninstalled apps
  • Test with Do Not Disturb / Focus modes enabled
Show full SKILL.md (198 more words)Show less

When to Use

Use this skill when:

  • Designing or implementing push notification solutions
  • Reviewing or improving existing push notification approaches
  • Making architectural or implementation decisions about push notification
  • Learning push notification patterns and best practices
  • Troubleshooting push notification-related issues

Do NOT use this skill when:

  • The question is about a fundamentally different technology domain
  • A more specific sibling skill covers the exact topic needed
  • The user needs a complete hands-on tutorial rather than expert guidance

Output Format

markdown
# Push Notification Analysis

## Context Assessment
[Situation summary and constraints]

## Recommended Approach
[Primary recommendation with rationale]

## Implementation Steps
1. [Step with specific details]
2. [Step with specific details]
3. [Step with specific details]

## Trade-offs and Considerations
- [Key trade-off 1]
- [Key trade-off 2]

## Next Steps
- [Immediate action item]
- [Follow-up action item]

Example

Input: "Help me implement push notification for a medium-scale production application"

Output: A structured analysis covering current state assessment, recommended push notification approach with specific patterns, implementation roadmap with milestones, and risk mitigation strategies tailored to the application scale and constraints.

Edge Cases

  • Legacy system integration: When push notification must coexist with legacy approaches, provide a gradual migration path rather than a complete rewrite
  • Scale mismatch: When the solution complexity exceeds the project scale, recommend a simpler approach and note when to revisit
  • Team skill gaps: When the team lacks experience with the recommended approach, include learning resources and simpler alternatives
  • Conflicting requirements: When constraints conflict (e.g., performance vs. maintainability), explicitly state the trade-off and recommend based on stated priorities

© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in src/process/resources/skills-library/bodies/skills/software-engineering/push-notification of FerroxLabs/wayland.

Open the folder on GitHubat commit 4c030c7

Compare with similar skills

Push Notification next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Push Notification compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Push Notification this skillFerroxLabs/wayland608—~4kAutomated safety check: PassApache-2.0
Mobilerun Docs Referencedroidrun/mobilerun9.6k—~943Automated safety check: PassMIT
App Store Screenshots GeneratorParthJadhav/app-store-screenshots7.2k—~14kAutomated safety check: PassMIT
Rnn Codebasewix/react-native-navigation13k—~2kAutomated safety check: PassMIT
Building Native UICherryHQ/cherry-studio-app4k8 repos~2.6kAutomated safety check: PassMIT
Sim Uselycorp-jp/sim-use1.4k—~3.2kAutomated safety check: PassApache-2.0

Similar skills

  • Mobilerun Docs Reference

    droidrun/mobilerun

    Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.

    9.6k GitHub stars~943 tokensUpdated 2 days ago
    MobileAuto-check passed
  • App Store Screenshots Generator

    ParthJadhav/app-store-screenshots

    Scaffolds a Next.js editor for designing App Store and Google Play screenshots as ads and exporting them at every required size, for iOS, Mac and Android.

    7.2k GitHub stars~14k tokensUpdated 4 days ago
    MobileAuto-check passed
  • Rnn Codebase

    wix/react-native-navigation

    Official

    Navigate and work with the react-native-navigation (RNN) codebase.

    13k GitHub stars~2k tokensUpdated yesterday
    MobileAuto-check passed
  • Building Native UI

    CherryHQ/cherry-studio-app

    Complete guide for building beautiful apps with Expo Router.

    4k GitHub starsUsed in 8 repos~2.6k tokens
    MobileAuto-check passed
  • Sim Use

    lycorp-jp/sim-use

    Drive iOS Simulator, Android emulator/device, and physical iPhone/iPad screens for AI agents.

    1.4k GitHub stars~3.2k tokensUpdated yesterday
    MobileAuto-check passed
  • Appium

    blokadaorg/blokada

    A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.

    3.3k GitHub stars~3.5k tokensUpdated today
    MobileAuto-check passed

More from FerroxLabs/wayland

All 1,194 skills in this repo
  • Star Office Helper

    FerroxLabs/wayland

    Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.

    608 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check: notes
  • Openclaw Setup

    FerroxLabs/wayland

    OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.

    608 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Tvcontrol Setup

    FerroxLabs/wayland

    Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.

    608 GitHub stars~5.7k tokensUpdated yesterday
    Auto-check passed
  • Ab Testing Specialist

    FerroxLabs/wayland

    End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.

    608 GitHub stars~3.7k tokensUpdated yesterday
    Auto-check passed
  • Academic Writer

    FerroxLabs/wayland

    Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…

    608 GitHub stars~4.5k tokensUpdated yesterday
    Auto-check passed
  • Accessibility Auditor

    FerroxLabs/wayland

    Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…

    608 GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Push Notification

What does Push Notification do?

Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in…. Push Notification is an agent skill from FerroxLabs/wayland. Expert push notification systems covering APNs/FCM integration, notification channels, rich notifications, silent notifications, notification grouping, deep linking, scheduling, analytics, opt-in strategies, and delivery optimization.

When should I use Push Notification?

Push Notification fits situations like: the user asks about push notification; push notification best practices; needs guidance on push notification implementation; the user needs a different specialized skill.

How do I install Push Notification in Claude Code?

Run `npx skills add FerroxLabs/wayland --skill push-notification -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/push-notification in FerroxLabs/wayland) into .claude/skills/push-notification in your project. Claude Code loads it when a task matches its description.

How do I install Push Notification in Codex?

Run `npx skills add FerroxLabs/wayland --skill push-notification -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/software-engineering/push-notification in FerroxLabs/wayland) into .agents/skills/push-notification in your project. Codex loads it when a task matches its description.

Can I use Push Notification in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill push-notification -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/push-notification, .gemini/skills/push-notification, .github/skills/push-notification and .opencode/skills/push-notification in your project.

What does Push Notification need to run?

SKILL.md names no scripts, command-line tools or credentials: Push Notification is instructions for the agent only. Our summary lists: Python 3; A credential in GROUP_KEY.

Does Push Notification access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Push Notification safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Push Notification use?

Push Notification is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Push Notification use?

About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Push Notification?

Skills that share tags, products or a category with Push Notification: Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars), App Store Screenshots Generator (ParthJadhav/app-store-screenshots, 7.2k stars), Rnn Codebase (wix/react-native-navigation, 13k stars) and Building Native UI (CherryHQ/cherry-studio-app, 4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Push Notification?

FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.

Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.