Illumio Daily Assessment Dashboard
Generate a single-file React component (.jsx) that gives an operator a fast, actionable daily health and security view of their Illumio Core PCE. This is not a deep assessment — it's the "morning coffee" dashboard that surfaces what changed, what's broken, and what needs attention right now.
Prerequisites
- The illumio-mcp MCP server must be connected (verify with
check-pce-connection)
- All date ranges default to the last 24 hours unless the user specifies otherwise (some queries use longer lookbacks for context, noted below)
Philosophy
A daily assessment is different from a full security assessment. The goal here is operational awareness, not strategic planning. Think of it as an SRE's morning check for microsegmentation:
- Speed over depth: Surface the top problems, don't enumerate everything
- Change detection: What's different from yesterday? New blocked traffic, workloads going offline, enforcement changes
- Actionable items: Every finding should suggest what to do about it
- Red/amber/green at a glance: The operator should know in 2 seconds if things are OK or on fire
Data Collection
Collect all data from the PCE before generating the artifact. Run these in the order listed. When results are large, parse with bash_tool + python3.
1. PCE Connection Health
illumio-mcp:check-pce-connection
If this fails, stop and surface the connection error prominently — the PCE being unreachable is finding #1.
2. Blocked & Potentially Blocked Traffic (Last 24h)
This is the most operationally urgent data — traffic that's being dropped or would be dropped.
illumio-mcp:get-traffic-flows-summary
start_date: <24 hours ago>
end_date: <now>
policy_decisions: ["blocked", "potentially_blocked"]
max_results: 200
Parse the results to extract:
- Total blocked connection count
- Total potentially blocked connection count
- Top sources and destinations by connection volume
- Top blocked ports/services
- Whether any blocked traffic involves production workloads (cross-reference with labels)
Also run a 7-day lookback for trend context:
illumio-mcp:get-traffic-flows-summary
start_date: <7 days ago>
end_date: <now>
policy_decisions: ["blocked", "potentially_blocked"]
max_results: 500
This lets the dashboard show whether today's blocked traffic volume is normal or spiking.
3. Workload Health & Heartbeats
illumio-mcp:get-workloads
online: false
max_results: 500
This returns workloads whose VEN agent hasn't sent a heartbeat recently (offline). Capture:
- Total offline workload count
- Which apps/envs they belong to
- Whether any are in production
Also get the full workload picture for context:
illumio-mcp:get-workload-enforcement-status
From this, derive:
- Total workloads and enforcement distribution
- Any mixed-enforcement applications (governance risk)
- Apps that changed enforcement mode recently (compare with events)
4. PCE Events (Last 24h)
Pull recent events focusing on errors and warnings — these surface agent issues, policy failures, and system problems.
illumio-mcp:get-events
severity: "err"
timestamp_gte: <24 hours ago ISO 8601>
max_results: 50
illumio-mcp:get-events
severity: "warning"
timestamp_gte: <24 hours ago ISO 8601>
max_results: 50
illumio-mcp:get-events
status: "failure"
timestamp_gte: <24 hours ago ISO 8601>
max_results: 50
Combine and deduplicate. Categorize events into:
- Agent issues: VEN communication failures, heartbeat timeouts
- Policy issues: Rule provisioning failures, policy compute errors
- System issues: PCE component errors, capacity warnings
- Security events: Tampering alerts, unauthorized access attempts
5. Data Exfiltration Indicators
Query for unusually large outbound traffic patterns. The idea is to find workloads sending abnormal volumes to external IPs or unexpected destinations.
illumio-mcp:get-traffic-flows-summary
start_date: <24 hours ago>
end_date: <now>
max_results: 500
From the full flow data, use Python to:
- Aggregate connections per source workload — flag any source with an unusually high connection count (top 5 by volume)
- Identify outbound flows to external/unmanaged IPs — especially on non-standard ports (not 80, 443, 53)
- Flag large fan-out patterns — a single source connecting to many distinct destinations (>20 unique destinations in 24h is suspicious)
- Flag high-risk port usage — outbound connections on ports commonly used for data exfil: 20/21 (FTP), 22 (SCP/SFTP), 3389 (RDP), 445 (SMB), or any port >10000 to external IPs
This is heuristic-based — clearly label findings as "indicators" not "confirmed exfiltration."
6. Unmanaged Traffic (Blind Spots)
illumio-mcp:find-unmanaged-traffic
lookback_days: 1
min_connections: 5
top_n: 20
These are flows from/to IPs that don't have a VEN. New unmanaged traffic appearing in the last 24h could mean:
- A new system was deployed without an agent
- An attacker is using an unmonitored host
- Infrastructure (load balancers, scanners) is generating noise
7. Compliance Snapshot
illumio-mcp:compliance-check
framework: "general"
lookback_days: 1
Quick compliance score for the last 24h. The dashboard shows this as a single number with pass/fail/warning breakdown.
8. Security Posture Drift (Optional Context)
If time allows, also run:
illumio-mcp:detect-lateral-movement-paths
lookback_days: 1
max_hops: 3
This identifies any new lateral movement paths that appeared in the last day — new bridge nodes or expanded reachability.
Data Transformation
Transform raw PCE data into JavaScript data structures embedded as const declarations at the top of the .jsx file. The artifact is fully self-contained.
Data Structures to Build
summaryKPIs — Object with top-level numbers:
{
totalWorkloads: N,
onlineWorkloads: N,
offlineWorkloads: N,
blockedFlows24h: N,
potentiallyBlockedFlows24h: N,
blockedTrend7d: [N, N, N, N, N, N, N], // daily counts
errorEvents24h: N,
warningEvents24h: N,
complianceScore: N, // percentage
unmanagedSources: N,
exfilIndicators: N // count of flagged patterns
}
blockedTraffic — Array of { source, destination, port, proto, connections, policyDecision, severity } sorted by connections descending
offlineWorkloads — Array of { name, hostname, app, env, ip, lastHeartbeat, enforcement } for all offline workloads
enforcementStatus — { visibility_only: N, selective: N, full: N, idle: N, mixedApps: [{app, env, modes}] }
criticalEvents — Array of { timestamp, severity, eventType, status, summary } sorted by timestamp descending
exfilIndicators — Array of { source, destinationCount, connectionCount, topPorts, riskLevel, reason } for flagged sources
unmanagedTraffic — Array of { ip, direction, destination, port, connections, riskNote } sorted by connections descending
complianceFindings — Array of { id, name, detail, status } from the compliance check
lateralMovement — Array of { app, env, reachable, bridge } if lateral movement data was collected
React Component Architecture
Technology Stack
- React with hooks (
useState, useEffect, useRef)
- Tailwind-free: All styling is inline
style={{}} objects
- Single file: Everything in one .jsx file, no separate CSS
- No external API calls: All data embedded as constants
Design System
Use the Illumio brand palette (same as the security dashboard skill):
const C = {
green: "#00C48C",
greenLight: "#E8FAF3",
greenDark: "#00A876",
teal: "#00B4D8",
tealLight: "#E5F7FB",
navy: "#1A1F36",
orange: "#FF6B35",
orangeLight: "#FFF3ED",
red: "#E63946",
redLight: "#FDE8EA",
gray50: "#F9FAFB",
gray100: "#F3F4F6",
gray200: "#E5E7EB",
gray300: "#D1D5DB",
gray400: "#9CA3AF",
gray500: "#6B7280",
gray700: "#374151",
white: "#FFFFFF",
};
Use Google Fonts DM Sans (weights 400–800) loaded via <link> in the component body.
Overall Health Indicator
At the very top of the dashboard, show a single large status indicator that summarizes everything:
- GREEN ("All Clear"): No offline production workloads, <5 blocked flows, no error events, no exfil indicators
- AMBER ("Attention Needed"): Some offline workloads OR 5-50 blocked flows OR warning events OR minor exfil indicators
- RED ("Action Required"): Production workloads offline OR >50 blocked flows OR error events OR critical exfil indicators OR compliance failures
The thresholds above are defaults — the logic should be clearly written so it's easy to adjust.
Tab Structure
Use a pill-style tab bar with 6 tabs:
- Overview — Health indicator, KPI cards (8 metrics), blocked traffic trend sparkline (7-day), top 5 issues list
- Blocked Traffic — Full blocked/potentially_blocked flow table with search, severity badges, source/dest grouping
- Workload Health — Offline workloads table, enforcement distribution donut, mixed-enforcement alerts
- Events & Alerts — Timeline of error/warning events, categorized by type, severity badges
- Exfiltration Watch — Flagged sources with risk indicators, fan-out visualization, unusual port activity
- Blind Spots — Unmanaged traffic table, new unmanaged sources, compliance score card
Tab 1: Overview
This is the "glance" view. It should answer "is everything OK?" in under 3 seconds.
- Health banner: Full-width bar, green/amber/red with icon and one-line summary
- KPI row: 4 cards across — Total Workloads (with online/offline split), Blocked Flows (24h with 7d trend arrow), Error Events, Compliance Score
- Second KPI row: 4 more cards — Offline Workloads, Exfil Indicators, Unmanaged Sources, Mixed-Enforcement Apps
- Trend sparkline: Small inline SVG showing 7-day blocked traffic trend (just dots and lines, no axis)
- Top Issues: Prioritized list of the 5 most urgent findings across all categories, each with a severity badge and one-line description. These are the "fix these first" items.
Tab 2: Blocked Traffic
- Summary bar: Total blocked + potentially blocked counts with percentage of total traffic
- Filter chips: By policy decision (blocked vs potentially_blocked), by severity
- Table: Source (app/env or IP), Destination (app/env or IP), Port, Proto, Connections, Policy Decision, Severity
- Sort by connections descending by default
- Red-tinted rows for blocked, amber for potentially_blocked
- If >50 flows, show top 50 with "and N more..." footer
Tab 3: Workload Health
- Enforcement donut chart: SVG with visibility_only / selective / full / idle segments
- Offline workloads table: Name, App (Env), IP, Enforcement Mode, status badge "OFFLINE"
- Mixed enforcement alerts: Cards for each app group where workloads have inconsistent enforcement modes
- Heartbeat summary: Count of workloads by last-seen bucket (last 1h, 1-6h, 6-24h, >24h)
Tab 4: Events & Alerts
- Event timeline: Vertical timeline with colored dots (red for errors, orange for warnings)
- Category filter: Agent / Policy / System / Security
- Event cards: Each shows timestamp, severity badge, event type, and summary text
- Counts bar: Total errors, warnings, and failures in the last 24h
Tab 5: Exfiltration Watch
This tab surfaces suspicious patterns. Frame everything as "indicators" — make it clear these are heuristic flags, not confirmed incidents.
- Risk summary cards: Count of high/medium/low risk indicators
- Flagged sources table: Source workload, # of unique destinations, # of connections, top ports used, risk level, reason for flag
- Fan-out visualization: Simple horizontal bar chart showing top 10 sources by unique destination count
- Unusual port activity: Table of outbound connections on non-standard ports (not 80/443/53) to external IPs
Tab 6: Blind Spots
- Unmanaged traffic table: IP, Direction, Connected App (Env), Port, Connections, Risk Note
- New sources badge: Highlight IPs that appear only in the last 24h
- Compliance card: Score with pass/fail/warning breakdown from the compliance check
- Lateral movement summary (if data available): Count of bridge nodes, max reachability, compared to baseline
Component Inventory
Build these reusable sub-components inside the file:
Badge: Pill-shaped { label, color, bg }
SeverityBadge: Pre-mapped for critical/high/medium/low/info
KPICard: Label, value, subtitle, trend arrow (up/down/flat), accent color
StatusBanner: Full-width banner with icon, title, and subtitle — colored by health status
Sparkline: Inline SVG sparkline from an array of numbers
DataTable: Generic sortable table with column definitions, search box, row coloring callback
DonutChart: SVG donut with legend
TimelineEvent: Single event in the timeline with dot, timestamp, and content
TabBar: Pill-style tab switcher
Critical: App/Env Tuple Convention
Same as the other Illumio skills — always display applications as app (env) tuples. Never show app name alone without the environment context.
Timestamps
Display all timestamps in the user's local timezone. Show relative time ("2h ago", "14m ago") alongside the absolute timestamp.
Output
Save the artifact as:
/mnt/user-data/outputs/illumio_daily_assessment_<YYYY-MM-DD>.jsx
Present to the user with present_files. The artifact renders directly in Claude's UI.
Quality Checklist
Before finalizing, verify:
1---2name: illumio-daily-assessment3description: Generate an on-demand daily health and security assessment dashboard for an Illumio Core PCE environment. Produces a single-file React (.jsx) artifact covering blocked traffic, workload health and heartbeat status, security posture drift, data exfiltration indicators, and critical events from the last 24 hours. Use this skill whenever the user asks for a daily check, daily assessment, morning briefing, environment health check, what's going wrong, blocked traffic report, workload status, heartbeat check, security posture overview, exfiltration detection, PCE daily ops, or anything that implies a routine operational review of their Illumio environment. Also trigger when the user says: daily report, daily dashboard, what happened overnight, anything broken, environment status, show me problems, security findings today, blocked flows, offline workloads, agent issues, or health summary. Requires the illumio-mcp MCP server to be connected.4---56# Illumio Daily Assessment Dashboard78Generate a single-file React component (.jsx) that gives an operator a fast, actionable daily health and security view of their Illumio Core PCE. This is not a deep assessment — it's the "morning coffee" dashboard that surfaces what changed, what's broken, and what needs attention right now.910## Prerequisites1112- The **illumio-mcp** MCP server must be connected (verify with `check-pce-connection`)13- All date ranges default to the **last 24 hours** unless the user specifies otherwise (some queries use longer lookbacks for context, noted below)1415## Philosophy1617A daily assessment is different from a full security assessment. The goal here is operational awareness, not strategic planning. Think of it as an SRE's morning check for microsegmentation:1819- **Speed over depth**: Surface the top problems, don't enumerate everything20- **Change detection**: What's different from yesterday? New blocked traffic, workloads going offline, enforcement changes21- **Actionable items**: Every finding should suggest what to do about it22- **Red/amber/green at a glance**: The operator should know in 2 seconds if things are OK or on fire2324## Data Collection2526Collect all data from the PCE before generating the artifact. Run these in the order listed. When results are large, parse with `bash_tool` + `python3`.2728### 1. PCE Connection Health2930```31illumio-mcp:check-pce-connection32```3334If this fails, stop and surface the connection error prominently — the PCE being unreachable is finding #1.3536### 2. Blocked & Potentially Blocked Traffic (Last 24h)3738This is the most operationally urgent data — traffic that's being dropped or would be dropped.3940```41illumio-mcp:get-traffic-flows-summary42 start_date: <24 hours ago>43 end_date: <now>44 policy_decisions: ["blocked", "potentially_blocked"]45 max_results: 20046```4748Parse the results to extract:49- Total blocked connection count50- Total potentially blocked connection count51- Top sources and destinations by connection volume52- Top blocked ports/services53- Whether any blocked traffic involves production workloads (cross-reference with labels)5455Also run a **7-day lookback** for trend context:56```57illumio-mcp:get-traffic-flows-summary58 start_date: <7 days ago>59 end_date: <now>60 policy_decisions: ["blocked", "potentially_blocked"]61 max_results: 50062```6364This lets the dashboard show whether today's blocked traffic volume is normal or spiking.6566### 3. Workload Health & Heartbeats6768```69illumio-mcp:get-workloads70 online: false71 max_results: 50072```7374This returns workloads whose VEN agent hasn't sent a heartbeat recently (offline). Capture:75- Total offline workload count76- Which apps/envs they belong to77- Whether any are in production7879Also get the full workload picture for context:80```81illumio-mcp:get-workload-enforcement-status82```8384From this, derive:85- Total workloads and enforcement distribution86- Any mixed-enforcement applications (governance risk)87- Apps that changed enforcement mode recently (compare with events)8889### 4. PCE Events (Last 24h)9091Pull recent events focusing on errors and warnings — these surface agent issues, policy failures, and system problems.9293```94illumio-mcp:get-events95 severity: "err"96 timestamp_gte: <24 hours ago ISO 8601>97 max_results: 5098```99100```101illumio-mcp:get-events102 severity: "warning"103 timestamp_gte: <24 hours ago ISO 8601>104 max_results: 50105```106107```108illumio-mcp:get-events109 status: "failure"110 timestamp_gte: <24 hours ago ISO 8601>111 max_results: 50112```113114Combine and deduplicate. Categorize events into:115- **Agent issues**: VEN communication failures, heartbeat timeouts116- **Policy issues**: Rule provisioning failures, policy compute errors117- **System issues**: PCE component errors, capacity warnings118- **Security events**: Tampering alerts, unauthorized access attempts119120### 5. Data Exfiltration Indicators121122Query for unusually large outbound traffic patterns. The idea is to find workloads sending abnormal volumes to external IPs or unexpected destinations.123124```125illumio-mcp:get-traffic-flows-summary126 start_date: <24 hours ago>127 end_date: <now>128 max_results: 500129```130131From the full flow data, use Python to:1321. **Aggregate connections per source workload** — flag any source with an unusually high connection count (top 5 by volume)1332. **Identify outbound flows to external/unmanaged IPs** — especially on non-standard ports (not 80, 443, 53)1343. **Flag large fan-out patterns** — a single source connecting to many distinct destinations (>20 unique destinations in 24h is suspicious)1354. **Flag high-risk port usage** — outbound connections on ports commonly used for data exfil: 20/21 (FTP), 22 (SCP/SFTP), 3389 (RDP), 445 (SMB), or any port >10000 to external IPs136137This is heuristic-based — clearly label findings as "indicators" not "confirmed exfiltration."138139### 6. Unmanaged Traffic (Blind Spots)140141```142illumio-mcp:find-unmanaged-traffic143 lookback_days: 1144 min_connections: 5145 top_n: 20146```147148These are flows from/to IPs that don't have a VEN. New unmanaged traffic appearing in the last 24h could mean:149- A new system was deployed without an agent150- An attacker is using an unmonitored host151- Infrastructure (load balancers, scanners) is generating noise152153### 7. Compliance Snapshot154155```156illumio-mcp:compliance-check157 framework: "general"158 lookback_days: 1159```160161Quick compliance score for the last 24h. The dashboard shows this as a single number with pass/fail/warning breakdown.162163### 8. Security Posture Drift (Optional Context)164165If time allows, also run:166```167illumio-mcp:detect-lateral-movement-paths168 lookback_days: 1169 max_hops: 3170```171172This identifies any new lateral movement paths that appeared in the last day — new bridge nodes or expanded reachability.173174## Data Transformation175176Transform raw PCE data into JavaScript data structures embedded as `const` declarations at the top of the .jsx file. The artifact is fully self-contained.177178### Data Structures to Build1791801. **`summaryKPIs`** — Object with top-level numbers:181 ```js182 {183 totalWorkloads: N,184 onlineWorkloads: N,185 offlineWorkloads: N,186 blockedFlows24h: N,187 potentiallyBlockedFlows24h: N,188 blockedTrend7d: [N, N, N, N, N, N, N], // daily counts189 errorEvents24h: N,190 warningEvents24h: N,191 complianceScore: N, // percentage192 unmanagedSources: N,193 exfilIndicators: N // count of flagged patterns194 }195 ```1961972. **`blockedTraffic`** — Array of `{ source, destination, port, proto, connections, policyDecision, severity }` sorted by connections descending1981993. **`offlineWorkloads`** — Array of `{ name, hostname, app, env, ip, lastHeartbeat, enforcement }` for all offline workloads2002014. **`enforcementStatus`** — `{ visibility_only: N, selective: N, full: N, idle: N, mixedApps: [{app, env, modes}] }`2022035. **`criticalEvents`** — Array of `{ timestamp, severity, eventType, status, summary }` sorted by timestamp descending2042056. **`exfilIndicators`** — Array of `{ source, destinationCount, connectionCount, topPorts, riskLevel, reason }` for flagged sources2062077. **`unmanagedTraffic`** — Array of `{ ip, direction, destination, port, connections, riskNote }` sorted by connections descending2082098. **`complianceFindings`** — Array of `{ id, name, detail, status }` from the compliance check2102119. **`lateralMovement`** — Array of `{ app, env, reachable, bridge }` if lateral movement data was collected212213## React Component Architecture214215### Technology Stack216- **React** with hooks (`useState`, `useEffect`, `useRef`)217- **Tailwind-free**: All styling is inline `style={{}}` objects218- **Single file**: Everything in one .jsx file, no separate CSS219- **No external API calls**: All data embedded as constants220221### Design System222223Use the Illumio brand palette (same as the security dashboard skill):224225```javascript226const C = {227 green: "#00C48C",228 greenLight: "#E8FAF3",229 greenDark: "#00A876",230 teal: "#00B4D8",231 tealLight: "#E5F7FB",232 navy: "#1A1F36",233 orange: "#FF6B35",234 orangeLight: "#FFF3ED",235 red: "#E63946",236 redLight: "#FDE8EA",237 gray50: "#F9FAFB",238 gray100: "#F3F4F6",239 gray200: "#E5E7EB",240 gray300: "#D1D5DB",241 gray400: "#9CA3AF",242 gray500: "#6B7280",243 gray700: "#374151",244 white: "#FFFFFF",245};246```247248Use Google Fonts `DM Sans` (weights 400–800) loaded via `<link>` in the component body.249250### Overall Health Indicator251252At the very top of the dashboard, show a single large status indicator that summarizes everything:253254- **GREEN ("All Clear")**: No offline production workloads, <5 blocked flows, no error events, no exfil indicators255- **AMBER ("Attention Needed")**: Some offline workloads OR 5-50 blocked flows OR warning events OR minor exfil indicators256- **RED ("Action Required")**: Production workloads offline OR >50 blocked flows OR error events OR critical exfil indicators OR compliance failures257258The thresholds above are defaults — the logic should be clearly written so it's easy to adjust.259260### Tab Structure261262Use a pill-style tab bar with 6 tabs:2632641. **Overview** — Health indicator, KPI cards (8 metrics), blocked traffic trend sparkline (7-day), top 5 issues list2652. **Blocked Traffic** — Full blocked/potentially_blocked flow table with search, severity badges, source/dest grouping2663. **Workload Health** — Offline workloads table, enforcement distribution donut, mixed-enforcement alerts2674. **Events & Alerts** — Timeline of error/warning events, categorized by type, severity badges2685. **Exfiltration Watch** — Flagged sources with risk indicators, fan-out visualization, unusual port activity2696. **Blind Spots** — Unmanaged traffic table, new unmanaged sources, compliance score card270271### Tab 1: Overview272273This is the "glance" view. It should answer "is everything OK?" in under 3 seconds.274275- **Health banner**: Full-width bar, green/amber/red with icon and one-line summary276- **KPI row**: 4 cards across — Total Workloads (with online/offline split), Blocked Flows (24h with 7d trend arrow), Error Events, Compliance Score277- **Second KPI row**: 4 more cards — Offline Workloads, Exfil Indicators, Unmanaged Sources, Mixed-Enforcement Apps278- **Trend sparkline**: Small inline SVG showing 7-day blocked traffic trend (just dots and lines, no axis)279- **Top Issues**: Prioritized list of the 5 most urgent findings across all categories, each with a severity badge and one-line description. These are the "fix these first" items.280281### Tab 2: Blocked Traffic282283- **Summary bar**: Total blocked + potentially blocked counts with percentage of total traffic284- **Filter chips**: By policy decision (blocked vs potentially_blocked), by severity285- **Table**: Source (app/env or IP), Destination (app/env or IP), Port, Proto, Connections, Policy Decision, Severity286- Sort by connections descending by default287- Red-tinted rows for blocked, amber for potentially_blocked288- If >50 flows, show top 50 with "and N more..." footer289290### Tab 3: Workload Health291292- **Enforcement donut chart**: SVG with visibility_only / selective / full / idle segments293- **Offline workloads table**: Name, App (Env), IP, Enforcement Mode, status badge "OFFLINE"294- **Mixed enforcement alerts**: Cards for each app group where workloads have inconsistent enforcement modes295- **Heartbeat summary**: Count of workloads by last-seen bucket (last 1h, 1-6h, 6-24h, >24h)296297### Tab 4: Events & Alerts298299- **Event timeline**: Vertical timeline with colored dots (red for errors, orange for warnings)300- **Category filter**: Agent / Policy / System / Security301- **Event cards**: Each shows timestamp, severity badge, event type, and summary text302- **Counts bar**: Total errors, warnings, and failures in the last 24h303304### Tab 5: Exfiltration Watch305306This tab surfaces suspicious patterns. Frame everything as "indicators" — make it clear these are heuristic flags, not confirmed incidents.307308- **Risk summary cards**: Count of high/medium/low risk indicators309- **Flagged sources table**: Source workload, # of unique destinations, # of connections, top ports used, risk level, reason for flag310- **Fan-out visualization**: Simple horizontal bar chart showing top 10 sources by unique destination count311- **Unusual port activity**: Table of outbound connections on non-standard ports (not 80/443/53) to external IPs312313### Tab 6: Blind Spots314315- **Unmanaged traffic table**: IP, Direction, Connected App (Env), Port, Connections, Risk Note316- **New sources badge**: Highlight IPs that appear only in the last 24h317- **Compliance card**: Score with pass/fail/warning breakdown from the compliance check318- **Lateral movement summary** (if data available): Count of bridge nodes, max reachability, compared to baseline319320### Component Inventory321322Build these reusable sub-components inside the file:323324- **`Badge`**: Pill-shaped `{ label, color, bg }`325- **`SeverityBadge`**: Pre-mapped for critical/high/medium/low/info326- **`KPICard`**: Label, value, subtitle, trend arrow (up/down/flat), accent color327- **`StatusBanner`**: Full-width banner with icon, title, and subtitle — colored by health status328- **`Sparkline`**: Inline SVG sparkline from an array of numbers329- **`DataTable`**: Generic sortable table with column definitions, search box, row coloring callback330- **`DonutChart`**: SVG donut with legend331- **`TimelineEvent`**: Single event in the timeline with dot, timestamp, and content332- **`TabBar`**: Pill-style tab switcher333334### Critical: App/Env Tuple Convention335336Same as the other Illumio skills — always display applications as `app (env)` tuples. Never show app name alone without the environment context.337338### Timestamps339340Display all timestamps in the user's local timezone. Show relative time ("2h ago", "14m ago") alongside the absolute timestamp.341342## Output343344Save the artifact as:345```346/mnt/user-data/outputs/illumio_daily_assessment_<YYYY-MM-DD>.jsx347```348349Present to the user with `present_files`. The artifact renders directly in Claude's UI.350351## Quality Checklist352353Before finalizing, verify:354355- [ ] Health banner correctly reflects the worst status across all categories356- [ ] All KPI cards show real numbers from the collected data357- [ ] Blocked traffic table is sorted by connections descending358- [ ] Offline workloads show app (env) tuples, not just hostnames359- [ ] Events are deduplicated and categorized correctly360- [ ] Exfiltration indicators are clearly labeled as heuristic, not confirmed361- [ ] Unmanaged traffic shows direction (inbound/outbound)362- [ ] Sparkline trend is visible and correctly scaled363- [ ] All tabs render without errors364- [ ] No empty state crashes — gracefully handle zero results for any section365- [ ] Compliance score displays even if only "general" framework was used366- [ ] Top Issues list on Overview pulls the most urgent items from all categories