rxjs-patterns
π―Skillfrom 7spade/black-tortoise
Validates and enforces architectural constraints for RxJS-based event-sourcing systems using static code analysis and predefined architectural rules.
Installation
npx skills add https://github.com/7spade/black-tortoise --skill rxjs-patternsSkill Details
Overview
# Architecture Gate CI - Implementation Guide
Comment ID 3796470142 Implementation
This document describes the implementation of the Architecture Gate CI system for enforcing event-sourcing and DDD architectural invariants.
Files Created/Modified
1. Script: `comprehensive-audit.js`
The main architecture enforcement script that validates:
- Presentation layer isolation: No EventBus/EventStore/DomainEvent imports from domain
- Event publishing control: Only PublishEventUseCase and event handlers can call publish/append
- Store layer placement: All stores MUST be in application layer
- Sequential append-before-publish: No Promise.all with event operations
- Event causality propagation: Handlers MUST propagate correlationId and set causationId
- Signal-first architecture: Minimal RxJS in presentation layer
2. Package Script: `package.json`
Already configured with script command:
```json
"architecture:gate": "node comprehensive-audit.js"
```
3. Documentation: `.architectural-rules.md`
Updated with:
- CI gate implementation details
- Detailed rule descriptions
- GitHub Actions workflow specification
- Local testing instructions
- Exit code documentation
- Workflow security features
4. GitHub Actions Workflow: `.github/workflows/architecture-gate.yml`
IMPORTANT: Create this file manually with the following content:
```yaml
name: Architecture Gate
on:
push:
branches: ['**']
paths:
- 'src/*/.ts'
- 'comprehensive-audit.js'
- '.github/workflows/architecture-gate.yml'
pull_request:
branches: ['**']
paths:
- 'src/*/.ts'
- 'comprehensive-audit.js'
- '.github/workflows/architecture-gate.yml'
# Least-privilege permissions (security best practice)
permissions:
contents: read
# Prevent concurrent runs, cancel outdated PR builds
concurrency:
group: architecture-gate-${{ github.ref }}
cancel-in-progress: true
jobs:
enforce-architecture:
name: Enforce Event-Sourcing Invariants
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Run Architecture Gate
run: node comprehensive-audit.js
env:
NODE_ENV: production
```
Manual Steps Required
- Create the workflow directory (if it doesn't exist):
```bash
mkdir -p .github/workflows
```
- Create the workflow file:
Copy the workflow YAML above into .github/workflows/architecture-gate.yml
- Test locally:
```bash
npm run architecture:gate
```
- Commit and push:
```bash
git add .
git commit -m "feat: add architecture gate CI per comment_id 3796470142"
git push
```
Architecture Rules Enforced
Rule 1: Presentation Layer Isolation
Forbidden in src/app/presentation/:**
- β
from '@domain/event-bus' - β
from '@domain/event-store' - β
from '@domain/event'
Must use:
- β Application facades
- β Application stores
Rule 2: Event Publishing Control
Only these can call eventBus.publish() or eventStore.append():
- β
publish-event.use-case.ts - β
Event handlers (in
application//handlers/event-handler*.ts)
All other files:
- β Cannot call
eventBus.publish() - β Cannot call
eventStore.append()
Rule 3: Store Layer Placement
*Stores (.store.ts) MUST:**
- β
Be in
src/app/application/** - β NOT be in presentation or domain layers
Rule 4: Sequential Append-Before-Publish
Forbidden:
- β
Promise.all([eventStore.append(...), ...]) - β
Promise.all([eventBus.publish(...), ...])
Required:
- β
Sequential:
await eventStore.append()thenawait eventBus.publish()
Rule 5: Event Causality Propagation
Event handlers creating events MUST:
- β
Propagate
correlationIdfrom parent event
More from this repository8
Implements and demonstrates Angular 20's new control flow syntax using @for, @if, and @switch directives for more concise and readable template rendering.
Provides a comprehensive Angular Material v20 configuration and component setup with strict architectural governance for event-sourced domain-driven design applications.
Manages Firebase integration and authentication workflows for Angular applications, ensuring secure and standardized connection to Firebase services.
Validates and enforces Angular routing architectural constraints and patterns within a TypeScript/Angular application's codebase.
ddd standard architecture rules skill from 7spade/black-tortoise
Connects and manages Firebase data interactions for a Claude Code skill, enabling seamless data retrieval, storage, and synchronization within the application architecture.
Based on the README, there's no direct information about the "material-design-3" Claude Code skill. The README is focused on an architecture enforcement system for event-sourcing and DDD architectu...
Integrates Google Maps functionality into Angular applications, providing a wrapper for rendering maps, markers, and geospatial interactions with simplified configuration and TypeScript support.