mcpField
R
reactive-programming

reactive-programming

github.com/aj-geddesDevelopment373493 installsUpdated 34w ago
Repository

About reactive-programming

A development skill for building responsive applications with reactive streams and observables to manage asynchronous data flows. Its guides cover RxJS patterns from debounced search and state management to reconnection and backpressure.

Key features

  1. 01Reactive streams and observables
  2. 02RxJS basics and custom operators
  3. 03Debounced search patterns
  4. 04State management and stream combination
  5. 05WebSocket reconnection and backpressure

Use cases

  1. 01Handle complex asynchronous flows
  2. 02Display real-time data updates
  3. 03Manage UI state with streams
  4. 04Combine WebSocket or SSE events with other sources

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill reactive-programming

After installing, type/reactive-programmingin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
backpressure-handling.md
combining-multiple-streams.md
custom-operators.md
rxjs-basics.md
search-with-debounce.md
state-management.md
websocket-with-reconnection.md
templates/
component-template.tsx

Details

From the project README

Reactive Programming

Table of Contents

Overview

Build responsive applications using reactive streams and observables for handling asynchronous data flows.

When to Use

  • Complex async data flows
  • Real-time data updates
  • Event-driven architectures
  • UI state management
  • WebSocket/SSE handling
  • Combining multiple data sources

Quick Start

Minimal working example:

import {
  Observable,
  Subject,
  BehaviorSubject,
  fromEvent,
  interval,
} from "rxjs";
import {
  map,
  filter,
  debounceTime,
  distinctUntilChanged,
  switchMap,
} from "rxjs/operators";

// Create observable from array
const numbers$ = new Observable<number>((subscriber) => {
  subscriber.next(1);
  subscriber.next(2);
  subscriber.next(3);
  subscriber.complete();
});

numbers$.subscribe({
  next: (value) => console.log(value),
// ... (see reference guides for full implementation)

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
RxJS BasicsRxJS Basics
Search with DebounceSearch with Debounce
State ManagementState Management
WebSocket with ReconnectionWebSocket with Reconnection
Combining Multiple StreamsCombining Multiple Streams
Backpressure HandlingBackpressure Handling
Custom OperatorsCustom Operators

Best Practices

✅ DO
  • Unsubscribe to prevent memory leaks
  • Use operators to transform data
  • Handle errors properly
  • Use shareReplay for expensive operations
  • Combine streams when needed
  • Test reactive code
❌ DON'T
  • Subscribe multiple times to same observable
  • Forget to unsubscribe
  • Use nested subscriptions
  • Ignore error handling
  • Make observables stateful

Comments

Markdown supported