yaht-project

Provides architecture and implementation guidance for the YAHT React Native/Expo habit tracker.

2|Updated Mar 7, 2025
One-click install
npx skills add https://github.com/Niqp/YAHT --skill yaht-project
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: yaht-project
Source: https://github.com/Niqp/YAHT/tree/main/.agent/skills/yaht-project
Command: npx skills add https://github.com/Niqp/YAHT --skill yaht-project

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) and assets (resource) components.

What problem does it solve?

This skill helps you quickly understand and apply the YAHT (Yet Another Habit Tracker) project’s architecture, patterns, and conventions so changes don’t break routing, state, notifications, or persistence.

Core Features & Use Cases

  • End-to-end architecture reference: Covers the app’s React Native/Expo structure, routing, store layout, and core modules (i18n, theming, charts, notifications).
  • Deterministic implementation guidance: Documents how Zustand slices, timer reconciliation, and the derived reminder queue are intended to work together across foreground/background flows.
  • Change-safety protocol: Includes the self-rewrite maintenance rule so the knowledge stays synchronized with the codebase when architecture or conventions change.
  • Platform-aware notification strategy: Explains iOS scheduling limits, timezone behavior, and Android reconciliation constraints to reduce subtle reminder bugs.

Quick Start

Use the yaht-project skill to design or debug a new feature (for example, extending habit reminder behavior) while following YAHT’s store slices, timer/reconciliation approach, and notification ledger conventions.

Frequently Asked Questions about yaht-project

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I structure Zustand slices for a React Native habit tracking app?

Structure Zustand slices by composing separate state modules for habit tracking, ensuring deterministic updates across foreground and background flows. This approach maintains routing, state, and persistence integrity in React Native applications.

How does timer reconciliation work with Expo notification scheduling?

Timer reconciliation synchronizes the derived reminder queue across foreground and background states using a notification ledger. This approach aligns scheduled reminders with actual habit timers to prevent duplicate or missed alerts.

What are the iOS scheduling limits for React Native habit reminder notifications?

iOS scheduling limits restrict the total number of pending local notifications and enforce timezone behavior constraints. You manage these platform-specific constraints by reconciling the notification queue with a ledger to reduce subtle reminder bugs.

Can I use Expo Router for state-driven habit tracking navigation?

Yes, Expo Router supports state-driven navigation by integrating with the Zustand store architecture. Following documented routing conventions ensures changes to habit data do not break navigation paths or application state.

Why are my Android scheduled habit reminders triggering at the wrong time?

Android reconciliation constraints and timezone behavior mismatches cause scheduled habit reminders to trigger incorrectly. You must align the derived reminder queue with the timer reconciliation protocol to resolve these notification sync errors.