Skip to content
Back to skills

GEO INFER COMMS

ASecurity

Communication systems for geospatial coordination. Use when implementing spatial messaging, multi-channel notifications, event streaming, spatial message routing, or subscriber management for geographic broadcasts.

  • 17 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 1, 2026
ai-agentspythongonodefastapiapi

Works with

  • api

Security analysis

A100/100

Pro scans all 20 files and shows the line behind each finding

Scanned September 22, 2026

npx -y skills add ActiveInferenceInstitute/GEO-INFER --skill GEO-INFER-COMMS --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of GEO INFER COMMS?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for GEO INFER COMMS
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/activeinferenceinstitute-geo-infer-comms/badge)](https://www.skillsdirectory.com/skills/activeinferenceinstitute-geo-infer-comms)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: geo-infer-comms
description: Communication systems for geospatial coordination. Use when implementing spatial messaging, multi-channel notifications, event streaming, spatial message routing, or subscriber management for geographic broadcasts.
prerequisites:
  required:
    - geo-infer-api
  recommended:
    - geo-infer-data
difficulty: intermediate
estimated_time: 45min
examples_dir: ../GEO-INFER-EXAMPLES/examples/
---

# GEO-INFER-COMMS

## Instructions

### Core Capabilities

- **Messaging**: `MessageBroker` — subscriber registry, priority queue, geo-filtered delivery; optional `recipient_resolver` callback for broadcast targeting
- **Notifications**: `NotificationManager` — in-app/email/SMS/push delivery hooks; the built-in handlers log intended delivery (wire real SMTP/SMS/push transports via `register_delivery_handler`); `AlertSystem` with rule-based triggers and cooldowns
- **Channels**: `ChannelManager` — multi-channel membership, permissions, and geospatial bounds
- **Events**: `EventManager` — event publish/subscribe with spatial indexing; `EventScheduler` for scheduled/recurring publication
- **Spatial routing**: `AdvancedSpatialRouter` — Dijkstra routing over network topology, proximity routing via registered node locations, load balancing
- **Streaming**: `StreamManager` — in-memory geospatial data streams (buffer simulation; no external transport)
- **Collaboration**: `CollaborationManager` — spatial collaboration sessions
- **API**: FastAPI REST server (`CommunicationAPI`) with optional JWT auth; WebSocket API (`WebSocketAPIManager`)

### Key Imports

```python
from geo_infer_comms import GeospatialCommunicationSystem, get_communication_system
from geo_infer_comms.core.messaging import MessageBroker, MessageRouter
from geo_infer_comms.core.notifications import NotificationManager, AlertSystem, AlertRule
from geo_infer_comms.core.channels import ChannelManager, ChannelPermissionManager
from geo_infer_comms.core.events import EventManager, EventScheduler, EventFilter
from geo_infer_comms.core.spatial_routing import (
    AdvancedSpatialRouter, GeospatialLoadBalancer, SpatialRoutingOptimizer,
)
from geo_infer_comms.core.streaming import StreamManager
from geo_infer_comms.api.rest_api import CommunicationAPI, create_api_server
from geo_infer_comms.api.websocket_api import WebSocketAPIManager
```

## Examples

End-to-end with the unified system (recommended):

```python
from geo_infer_comms import GeospatialCommunicationSystem

system = GeospatialCommunicationSystem({"enable_persistence": False})
system.start()
try:
    system.message_broker.subscribe("user_1", print)
    system.send_message(content="Alert: flood detected", recipients=["user_1"])
finally:
    system.stop()
```

Broker with an explicit broadcast recipient resolver (required for
`channel`/`role`/`location_based` target types):

```python
from geo_infer_comms.core.messaging import MessageBroker

broker = MessageBroker(
    recipient_resolver=lambda target_type, criteria: registry.lookup(target_type, criteria)
)
```

Alert rules are dataclass objects, not dicts:

```python
from geo_infer_comms.core.notifications import AlertRule

rule = AlertRule(
    name="High Temperature Alert",
    description="Alert when temperature exceeds threshold",
    conditions={"temperature": {"min": 35.0}},
    alert_title="High Temperature Warning",
    alert_content="Temperature has exceeded safe threshold",
    recipients=["admin@geo-infer.org"],
)
rule_id = system.alert_system.create_alert_rule(rule)
```

## Guidelines

- Broadcasts with `target_type in {"channel", "role", "location_based"}` require a `recipient_resolver` on the broker; without one they raise `ValueError`.
- REST auth: set `COMMS_JWT_SECRET` to enable HS256 JWT validation (PyJWT); invalid tokens are rejected with 401. Without a secret, a deterministic hash fallback derives the user ID from the token. WebSocket auth follows the same policy.
- Notification delivery handlers for email/SMS/push log intended delivery; register custom handlers via `NotificationManager.register_delivery_handler` for real transports.
- System metrics are nested: `metrics["message_metrics"]["metrics"]["messages_sent"]`, etc.
- Test: `uv run python GEO-INFER-TEST/run_unified_tests.py --module COMMS`

### Integrations

- **EMERGENCY** → Emergency notification broadcasting
- **IOT** → Sensor alert thresholds
- **PEP** → Stakeholder engagement notifications
- **CIV** → Community geographic broadcasts
- **OPS** → System alert delivery

Files in this skill

  • AGENTS.md1.3 KB
  • README.md933 B
  • SKILL.md2.1 KB
  • config/AGENTS.md1.2 KB
  • config/README.md737 B
  • config/comms_config.yaml4.3 KB
  • docs/AGENTS.md1.1 KB
  • docs/README.md731 B
  • docs/api_schema.yaml23.9 KB
  • examples/AGENTS.md1.2 KB
  • examples/README.md966 B
  • examples/basic_usage.py9.3 KB
  • pyproject.toml3.2 KB
  • requirements.txt99 B
  • setup.py1.4 KB
  • src/AGENTS.md1.1 KB
  • src/README.md730 B
  • src/geo_infer_comms/AGENTS.md1.2 KB
  • src/geo_infer_comms/README.md1 KB
  • src/geo_infer_comms/__init__.py16 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.