Skills › DevOps & Infrastructure › Observability & tracing
unified-notifications-ops
Operate notifications as one ECC-native workflow across GitHub, Linear, desktop alerts, hooks, and connected communication surfaces. Use when the real problem is alert routing, deduplication, escalation, or inbox collapse.
The full skill
—
name: unified-notifications-ops
description: Operate notifications as one ECC-native workflow across GitHub, Linear, desktop alerts, hooks, and connected communication surfaces. Use when the real problem is alert routing, deduplication, escalation, or inbox collapse.
origin: ECC
—
# Unified Notifications Ops
Use this skill when the real problem is not a missing ping. The real problem is a fragmented notification system.
The job is to turn scattered events into one operator surface with:
– clear severity
– clear ownership
– clear routing
– clear follow-up action
## When to Use
– the user wants a unified notification lane across GitHub, Linear, local hooks, desktop alerts, chat, or email
– CI failures, review requests, issue updates, and operator events are arriving in disconnected places
– the current setup creates noise instead of action
– the user wants to consolidate overlapping notification branches or backlog proposals into one ECC-native lane
– the workspace already has hooks, MCPs, or connected tools, but no coherent notification policy
## Preferred Surface
Start from what already exists:
– GitHub issues, PRs, reviews, comments, and CI
– Linear issue/project movement
– local hook events and session lifecycle signals
– desktop notification primitives
– connected email/chat surfaces when they actually exist
Prefer ECC-native orchestration over telling the user to adopt a separate notification product.
## Non-Negotiable Rules
– never expose tokens, secrets, webhook secrets, or internal identifiers
– separate:
– event source
– severity
– routing channel
– operator action
– default to digest-first when interruption cost is unclear
– do not fan out every event to every channel
– if the real fix is better issue triage, hook policy, or project flow, say so explicitly
## Event Pipeline
Treat the lane as:
1. **Capture** the event
2. **Classify** urgency and owner
3. **Route** to the correct channel
4. **Collapse** duplicates and low-signal churn
5. **Attach** the next operator action
The goal is fewer, better notifications.
## Default Severity Model
| Class | Examples | Default handling |
| — | — | — |
| Critical | broken default-branch CI, security issue, blocked release, failed deploy | interrupt now |
| High | review requested, failing PR, owner-blocking handoff | same-day alert |
| Medium | issue state changes, notable comments, backlog movement | digest or queue |
| Low | repeat successes, routine churn, redundant lifecycle markers | suppress or fold |
If the workspace has no severity model, build one before proposing automation.
## Workflow
### 1. Inventory the current surface
List:
– event sources
– current channels
– existing hooks/scripts that emit alerts
– duplicate paths for the same event
– silent failure cases where important things are not being surfaced
Call out what ECC already owns.
### 2. Decide what deserves interruption
For each event family, answer:
– who needs to know?
– how fast do they need to know?
– should this interrupt, batch, or just log?
Use these defaults:
– interrupt for release, CI, security, and owner-blocking events
– digest for medium-signal updates
– log-only for telemetry and low-signal lifecycle markers
### 3. Collapse duplicates before adding channels
Look for:
– the same PR event appearing in GitHub, Linear, and local logs
– repeated hook notifications for the same failure
– comments or status churn that should be summarized instead of forwarded raw
– channels that duplicate each other without adding a better action path
Prefer:
– one canonical summary
– one owner
– one primary channel
– one fallback path
### 4. Design the ECC-native workflow
For each real notification need, define:
– **source**
– **gate**
– **shape**: immediate alert, digest, queue, or dashboard-only
– **channel**
– **action**
If ECC already has the primitive, prefer:
– a skill for operator triage
– a hook for automatic emission/enforcement
– an agent for delegated classification
– an MCP/connector only when a real bridge is missing
### 5. Return an action-biased design
End with:
– what to keep
– what to suppress
– what to merge
– what ECC should wrap next
## Output Format
“`text
CURRENT SURFACE
– sources
– channels
– duplicates
– gaps
EVENT MODEL
– critical
– high
– medium
– low
ROUTING PLAN
– source -> channel
– why
– operator owner
CONSOLIDATION
– suppress
– merge
– canonical summaries
NEXT ECC MOVE
– skill / hook / agent / MCP
– exact workflow to build next
“`
## Recommendation Rules
– prefer one strong lane over many weak ones
– prefer digests for medium and low-signal updates
– prefer hooks when the signal should emit automatically
– prefer operator skills when the work is triage, routing, and review-first decision-making
– prefer `project-flow-ops` when the root cause is backlog / PR coordination rather than alerts
– prefer `workspace-surface-audit` when the user first needs a source inventory
– if desktop notifications are enough, do not invent an unnecessary external bridge
## Good Use Cases
– "We have GitHub, Linear, and local hook alerts, but no single operator flow"
– "Our CI failures are noisy and people ignore them"
– "I want one notification policy across Claude, OpenCode, and Codex surfaces"
– "Figure out what should interrupt versus land in a digest"
– "Collapse overlapping notification PR ideas into one canonical ECC lane"
## Related Skills
– `workspace-surface-audit`
– `project-flow-ops`
– `github-ops`
– `knowledge-ops`
– `customer-billing-ops` when the notification pain is billing/customer operations rather than engineering