🎯

angular-google-maps

🎯Skill

from 7spade/black-tortoise

VibeIndex|
What it does

Integrates Google Maps functionality into Angular applications, providing a wrapper for rendering maps, markers, and geospatial interactions with simplified configuration and TypeScript support.

angular-google-maps

Installation

Install skill:
npx skills add https://github.com/7spade/black-tortoise --skill angular-google-maps
2
AddedJan 27, 2026

Skill Details

SKILL.md

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

  1. Create the workflow directory (if it doesn't exist):

```bash

mkdir -p .github/workflows

```

  1. Create the workflow file:

Copy the workflow YAML above into .github/workflows/architecture-gate.yml

  1. Test locally:

```bash

npm run architecture:gate

```

  1. 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() then await eventBus.publish()

Rule 5: Event Causality Propagation

Event handlers creating events MUST:

  • βœ… Propagate correlationId from parent event

More from this repository8

🎯
angular-20-control-flow🎯Skill

Implements and demonstrates Angular 20's new control flow syntax using @for, @if, and @switch directives for more concise and readable template rendering.

🎯
angular-material-v20🎯Skill

Provides a comprehensive Angular Material v20 configuration and component setup with strict architectural governance for event-sourced domain-driven design applications.

🎯
angularfire🎯Skill

Manages Firebase integration and authentication workflows for Angular applications, ensuring secure and standardized connection to Firebase services.

🎯
angular-router🎯Skill

Validates and enforces Angular routing architectural constraints and patterns within a TypeScript/Angular application's codebase.

🎯
ddd standard architecture rules🎯Skill

ddd standard architecture rules skill from 7spade/black-tortoise

🎯
rxjs-patterns🎯Skill

Validates and enforces architectural constraints for RxJS-based event-sourcing systems using static code analysis and predefined architectural rules.

🎯
firebase-data-connect🎯Skill

Connects and manages Firebase data interactions for a Claude Code skill, enabling seamless data retrieval, storage, and synchronization within the application architecture.

🎯
material-design-3🎯Skill

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...