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:
- Capture the event
- Classify urgency and owner
- Route to the correct channel
- Collapse duplicates and low-signal churn
- 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
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 Codex, 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
1---2name: unified-notifications-ops3description: 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.4---5
6# Unified Notifications Ops
7
8Use this skill when the real problem is not a missing ping. The real problem is a fragmented notification system.
9
10The job is to turn scattered events into one operator surface with:
11- clear severity
12- clear ownership
13- clear routing
14- clear follow-up action
15
16## When to Use
17
18- the user wants a unified notification lane across GitHub, Linear, local hooks, desktop alerts, chat, or email
19- CI failures, review requests, issue updates, and operator events are arriving in disconnected places
20- the current setup creates noise instead of action
21- the user wants to consolidate overlapping notification branches or backlog proposals into one ECC-native lane
22- the workspace already has hooks, MCPs, or connected tools, but no coherent notification policy
23
24## Preferred Surface
25
26Start from what already exists:
27- GitHub issues, PRs, reviews, comments, and CI
28- Linear issue/project movement
29- local hook events and session lifecycle signals
30- desktop notification primitives
31- connected email/chat surfaces when they actually exist
32
33Prefer ECC-native orchestration over telling the user to adopt a separate notification product.
34
35## Non-Negotiable Rules
36
37- never expose tokens, secrets, webhook secrets, or internal identifiers
38- separate:
39 - event source
40 - severity
41 - routing channel
42 - operator action
43- default to digest-first when interruption cost is unclear
44- do not fan out every event to every channel
45- if the real fix is better issue triage, hook policy, or project flow, say so explicitly
46
47## Event Pipeline
48
49Treat the lane as:
50
511. **Capture** the event
522. **Classify** urgency and owner
533. **Route** to the correct channel
544. **Collapse** duplicates and low-signal churn
555. **Attach** the next operator action
56
57The goal is fewer, better notifications.
58
59## Default Severity Model
60
61| Class | Examples | Default handling |
62| --- | --- | --- |
63| Critical | broken default-branch CI, security issue, blocked release, failed deploy | interrupt now |
64| High | review requested, failing PR, owner-blocking handoff | same-day alert |
65| Medium | issue state changes, notable comments, backlog movement | digest or queue |
66| Low | repeat successes, routine churn, redundant lifecycle markers | suppress or fold |
67
68If the workspace has no severity model, build one before proposing automation.
69
70## Workflow
71
72### 1. Inventory the current surface
73
74List:
75- event sources
76- current channels
77- existing hooks/scripts that emit alerts
78- duplicate paths for the same event
79- silent failure cases where important things are not being surfaced
80
81Call out what ECC already owns.
82
83### 2. Decide what deserves interruption
84
85For each event family, answer:
86- who needs to know?
87- how fast do they need to know?
88- should this interrupt, batch, or just log?
89
90Use these defaults:
91- interrupt for release, CI, security, and owner-blocking events
92- digest for medium-signal updates
93- log-only for telemetry and low-signal lifecycle markers
94
95### 3. Collapse duplicates before adding channels
96
97Look for:
98- the same PR event appearing in GitHub, Linear, and local logs
99- repeated hook notifications for the same failure
100- comments or status churn that should be summarized instead of forwarded raw
101- channels that duplicate each other without adding a better action path
102
103Prefer:
104- one canonical summary
105- one owner
106- one primary channel
107- one fallback path
108
109### 4. Design the ECC-native workflow
110
111For each real notification need, define:
112- **source**
113- **gate**
114- **shape**: immediate alert, digest, queue, or dashboard-only
115- **channel**
116- **action**
117
118If ECC already has the primitive, prefer:
119- a skill for operator triage
120- a hook for automatic emission/enforcement
121- an agent for delegated classification
122- an MCP/connector only when a real bridge is missing
123
124### 5. Return an action-biased design
125
126End with:
127- what to keep
128- what to suppress
129- what to merge
130- what ECC should wrap next
131
132## Output Format
133
134```text
135CURRENT SURFACE
136- sources
137- channels
138- duplicates
139- gaps
140
141EVENT MODEL
142- critical
143- high
144- medium
145- low
146
147ROUTING PLAN
148- source -> channel
149- why
150- operator owner
151
152CONSOLIDATION
153- suppress
154- merge
155- canonical summaries
156
157NEXT ECC MOVE
158- skill / hook / agent / MCP
159- exact workflow to build next
160```
161
162## Recommendation Rules
163
164- prefer one strong lane over many weak ones
165- prefer digests for medium and low-signal updates
166- prefer hooks when the signal should emit automatically
167- prefer operator skills when the work is triage, routing, and review-first decision-making
168- prefer `project-flow-ops` when the root cause is backlog / PR coordination rather than alerts
169- prefer `workspace-surface-audit` when the user first needs a source inventory
170- if desktop notifications are enough, do not invent an unnecessary external bridge
171
172## Good Use Cases
173
174- "We have GitHub, Linear, and local hook alerts, but no single operator flow"
175- "Our CI failures are noisy and people ignore them"
176- "I want one notification policy across Codex, OpenCode, and Codex surfaces"
177- "Figure out what should interrupt versus land in a digest"
178- "Collapse overlapping notification PR ideas into one canonical ECC lane"
179
180## Related Skills
181
182- `workspace-surface-audit`
183- `project-flow-ops`
184- `github-ops`
185- `knowledge-ops`
186- `customer-billing-ops` when the notification pain is billing/customer operations rather than engineering