Skip to content

Conversation

@alexi-build
Copy link
Contributor

@alexi-build alexi-build commented Jan 4, 2026

Description

Fifteen Million Merits

Trigger Raycast Focus and block Social Media unless you have work currently running in AI agents. Inspired by a tweet from @theo.

Features

  • AI Agent Session Tracking: Monitor active sessions from popular AI agents.
  • Dynamic Focus Mode: Triggers Raycast Focus mode when no AI agents are active.
  • Auto-Completion: Automatically stops Focus mode once an AI agent session is initiated.
  • Menu Bar Integration: Real-time counter display and quick controls in the macOS menu bar.
  • Universal Hooks: One-click setup for Claude Code, Cursor, Opencode, and Codex CLI.

Screencast

fifteen-million-merits-issue-1080.mov

Checklist

@raycastbot raycastbot added new extension Label for PRs with new extensions platform: macOS labels Jan 4, 2026
@raycastbot
Copy link
Collaborator

Congratulations on your new Raycast extension! 🚀

Due to our current reduced availability, the initial review may take up to 10-15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

- feat: add enable/disable toggle for session counter
- feat(storage): add lifetime merits tracking
- feat: add confirmation alert before resetting lifetime merits
- refactor(ui): reorder menu items for better UX
@alexi-build alexi-build marked this pull request as ready for review January 7, 2026 01:47
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 7, 2026

Greptile Summary

This PR adds a new "Fifteen Million Merits" extension that tracks AI agent sessions and triggers Raycast Focus mode when no agents are active. The extension monitors session counts from Claude Code, Cursor, Opencode, and Codex CLI through hook integrations.

Key changes:

  • Menu bar integration showing active sessions counter and lifetime merits tracking
  • Commands to increment/decrement session count and setup hooks for various AI agents
  • Dynamic focus mode activation when counter reaches zero (blocking social media/news)
  • Hook configuration utilities that modify config files for Claude, Cursor, Opencode, and add shell aliases for Codex
  • Proper use of LocalStorage for persistence and optimistic updates in the UI

The implementation is well-structured with proper type definitions, error handling, and user confirmations for destructive actions. Configuration follows Raycast standards including proper Prettier config, changelog format with {PR_MERGE_DATE} placeholder, and metadata screenshots.

Confidence Score: 4/5

  • This PR is safe to merge after fixing the execSync usage
  • Well-implemented extension with proper structure, error handling, and follows Raycast conventions. One critical issue with execSync usage that should use Raycast's open() API instead to avoid activation errors
  • Pay attention to src/lib/storage.ts - needs to replace execSync with open() API

Important Files Changed

Filename Overview
extensions/fifteen-million-merits/package.json Extension configuration with commands, preferences, and metadata - all properly structured
extensions/fifteen-million-merits/src/lib/storage.ts Core storage and focus mode logic with execSync usage that should use Raycast's open API
extensions/fifteen-million-merits/src/setup-ai-agent.ts Hook setup for Claude, Cursor, Opencode, and Codex with proper file system operations
extensions/fifteen-million-merits/src/show-ai-agent-sessions-counter.tsx Menu bar component with session counter, merits tracking, and controls - well implemented with optimistic updates

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Additional Comments (1)

  1. extensions/fifteen-million-merits/src/lib/storage.ts, line 62-72 (link)

    logic: use open() from @raycast/api instead of execSync to avoid potential activation errors

13 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants