npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

adaria-ai

v0.1.12

Published

Single-user marketing operations agent for the Adaria.ai app portfolio, running as a macOS launchd daemon with Slack interface

Readme


adaria-ai is a single-user, local-first marketing operations agent that runs as a macOS background service. It connects to Slack, orchestrates data collection from 8 marketing sources, runs Claude-powered analysis skills, and delivers weekly growth briefings with approval-gated actions.

Built for the Adaria.ai app portfolio (Fridgify, Arden TTS, Tempy), but configurable for any mobile app team via apps.yaml.

Features

8 Analysis Skills — ASO keyword tracking, review sentiment & reply drafts, onboarding funnel analysis, SEO blog generation, short-form content ideas, SDK request aggregation, content strategy, and social media publishing.

8 Data Collectors — App Store Connect, Google Play Console, ASOMobile, Eodin SDK, Eodin Blog + Search Console + GA4, Fridgify Recipes API, YouTube Data API, Arden TTS metrics.

6 Social Platforms — Generate and publish platform-optimised marketing content to Twitter/X, Facebook, Threads, TikTok, YouTube Community, and LinkedIn. Every post is approval-gated.

Two Interaction Modes

| Mode | Trigger | Example | |------|---------|---------| | Mode A — Skill command | @adaria-ai aso fridgify | Runs full ASO analysis with keyword rankings, competitor diffs, and metadata proposals | | Mode B — Conversational | @adaria-ai how are reviews this week? | Claude answers using 4 read-only MCP tools against your marketing data |

Automated Briefings — Weekly growth reports and daily threshold alerts delivered to Slack on a launchd cron schedule.

Approval-Gated Write Actions — Blog publishing, review replies, metadata changes, and social posts require explicit Slack button approval before execution.

Architecture

                           Slack
                             |
                       +-----+-----+
                       |  daemon   |  (always-on, launchd)
                       +-----+-----+
                             |
                   +---------+---------+
                   |                   |
              Mode A              Mode B
          (skill dispatch)    (Claude + MCP tools)
                   |                   |
            skills/*.ts          tools/*.ts
                   |              (read-only)
          collectors/*.ts             |
                   |              SQLite DB
            safety.ts
        (approval gates)
                   |
         Slack Block Kit
       [Approve] [Reject]

Three separate launchd processes:

| Process | Schedule | Purpose | |---------|----------|---------| | com.adaria-ai.daemon | Always on | Reactive Slack event handler | | com.adaria-ai.weekly | Sun 23:00 UTC | Full weekly analysis + briefing | | com.adaria-ai.monitor | Daily 23:00 UTC | Threshold-based alerts |

Quick Start

# 1. Install
npm install -g @anthropic-ai/claude-code
claude /login
npm install -g adaria-ai

# 2. Configure
adaria-ai init

# 3. Run
adaria-ai start
adaria-ai status    # verify 3 launchd jobs loaded
adaria-ai doctor    # health check

CLI Commands

adaria-ai init                # Interactive setup wizard
adaria-ai init slack          # Configure Slack credentials only
adaria-ai init collectors     # Configure data source credentials
adaria-ai init social         # Configure social platform credentials

adaria-ai start               # Install and load 3 launchd plists
adaria-ai stop                # Unload all launchd plists
adaria-ai status              # Check launchd job states
adaria-ai logs                # Tail daemon logs

adaria-ai doctor              # Full health check
adaria-ai analyze             # Run weekly analysis manually
adaria-ai monitor             # Run daily monitor manually

Configuration

All runtime state lives in ~/.adaria/ (override with ADARIA_HOME):

~/.adaria/
  config.yaml          # Written by `adaria-ai init`
  apps.yaml            # Your apps, platforms, keywords, competitors
  sessions.json        # Slack thread <-> Claude session map
  audit.jsonl          # Every action logged
  data/adaria.db       # SQLite database
  logs/                # Daemon, weekly, monitor logs

Secrets are stored in macOS Keychain, never in config files.

Dev Profile

Run a separate dev instance alongside production:

# Dev profile uses ~/.adaria-dev with isolated keychain namespace
npm run init:dev
npm run smoke:collectors:dev

Skills Reference

| Skill | Command | What it does | |-------|---------|-------------| | ASO | aso <app> | Keyword rankings, rank changes, competitor diffs, metadata proposals | | Reviews | review <app> | Sentiment analysis, complaint clustering, reply drafts | | Onboarding | onboarding <app> | Funnel analysis, cohort retention, drop-off hypotheses | | SEO Blog | blog <app> | Blog post generation + Fridgify recipe content | | Short-form | shortform <app> | YouTube Shorts performance + content ideas | | SDK Requests | sdkrequest <app> | SDK event aggregation and analysis | | Content | content <app> | Pinterest pins + trend content ideas | | Social | social <app> | Generate + post to 6 platforms (approval-gated) |

Security

  • Slack allowlist — Only configured user IDs can interact with the bot
  • Prompt injection defense — All external data (reviews, recipes, competitor metadata) is sanitized and XML-wrapped before reaching Claude
  • Read-only MCP tools — Mode B has no write access; skills are never exposed as tools
  • Approval gates — Every write action requires human confirmation
  • Audit log — Every invocation, skill dispatch, and approval action is logged
  • No secrets in npm — Pre-publish scanner blocks tarball if credentials detected
  • Keychain storage — All tokens stored in macOS Keychain, not files

Tech Stack

  • Runtime: Node.js 20+, TypeScript (strict, ESM)
  • AI: Claude CLI (via @anthropic-ai/claude-code)
  • Messaging: Slack (Socket Mode + Bolt)
  • Database: SQLite (better-sqlite3, WAL mode)
  • Process management: macOS launchd
  • Testing: Vitest (545 tests)

Requirements

  • macOS (launchd-based process management)
  • Node.js 20+
  • Claude Code CLI installed and authenticated
  • Slack workspace with a bot app (Socket Mode enabled)

License

MIT