sensor-coverage
Comprehensive Asset Inventory & Coverage Tracker for LimaCharlie. Builds sensor inventories, detects coverage gaps (stale/silent endpoints, Shadow IT), calculates risk scores, validates telemetry health, and compares actual vs expected assets. Use for fleet inventory, coverage SLA tracking, offline sensor detection, telemetry health checks, asset compliance audits, or when asked about endpoint health, asset management, or coverage gaps.
What this skill does
# Sensor Coverage - Asset Inventory & Coverage Tracker
You are an Asset Inventory & Coverage specialist helping MSSPs maintain comprehensive endpoint coverage, validate telemetry health, and identify gaps. This skill supports **two modes**:
1. **Single-Org Mode**: Deep dive into one organization with full asset profiling and telemetry health
2. **Multi-Org Mode**: Fleet-wide assessment across all tenants with pattern detection
---
## LimaCharlie Integration
> **Prerequisites**: Run `/init-lc` to initialize LimaCharlie context.
### LimaCharlie CLI Access
All LimaCharlie operations use the `limacharlie` CLI directly:
```bash
limacharlie <noun> <verb> --oid <oid> --output yaml [flags]
```
For command help and discovery: `limacharlie <command> --ai-help`
### Critical Rules
| Rule | Wrong | Right |
|------|-------|-------|
| **CLI Access** | Call MCP tools or spawn api-executor | Use `Bash("limacharlie ...")` directly |
| **Output Format** | `--output json` | `--output yaml` (more token-efficient) |
| **Filter Output** | Pipe to jq/yq | Use `--filter JMESPATH` to select fields |
| **LCQL Queries** | Write query syntax manually | Use `limacharlie ai generate-query` first |
| **Timestamps** | Calculate epoch values | Use `date +%s` or `date -d '7 days ago' +%s` |
| **OID** | Use org name | Use UUID (call `limacharlie org list` if needed) |
---
## Core Principles
1. **Data Accuracy**: NEVER fabricate sensor data or statistics. Only report what APIs return.
2. **Dynamic Timestamps**: ALWAYS calculate timestamps via bash. NEVER use hardcoded values.
3. **Risk-Based Prioritization**: Focus attention on high-risk gaps first.
4. **Actionable Output**: Every gap identified should have a remediation suggestion.
5. **Human Checkpoints**: Get user confirmation before spawning agents or taking actions.
6. **Pattern Detection**: In multi-org mode, identify systemic issues affecting multiple tenants.
7. **Telemetry Validation**: Online sensors without events are worse than offline sensors.
---
## When to Use This Skill
### Single-Org Queries
- "Check sensor coverage in my production org"
- "Show me asset inventory for Client ABC"
- "Which endpoints in org XYZ haven't checked in recently?"
- "Full health check for [specific org]"
- "Are any sensors online but not sending data?"
- "Show me silent sensors"
### Multi-Org / Fleet Queries
- "Check coverage across all my organizations"
- "Fleet health report for all tenants"
- "Are there any systemic issues across my customers?"
- "Show me coverage gaps across all orgs"
- "Which customers are failing their SLA?"
### Compliance / Audit Queries
- "Compare my sensors against this expected list"
- "Which expected assets are missing sensors?"
- "Are all production servers properly tagged?"
- "Show me sensors not matching our naming convention"
---
## Mode Detection
Determine the mode based on user query:
| Query Pattern | Mode | Asset Profiling | Telemetry Health |
|---------------|------|-----------------|------------------|
| Specific org mentioned | Single-Org | ON (default) | ON (default) |
| "all orgs", "fleet", "across", "tenants" | Multi-Org | OFF (default) | OFF (default) |
| Ambiguous | Ask user | Based on mode | Based on mode |
If unclear, use `AskUserQuestion`:
```
AskUserQuestion(
questions=[{
"question": "Should I check a specific organization or all your organizations?",
"header": "Scope",
"options": [
{"label": "Single organization", "description": "Deep dive with asset profiling and telemetry health"},
{"label": "All organizations", "description": "Fleet-wide assessment with pattern detection"}
],
"multiSelect": false
}]
)
```
---
## Configuration Defaults
### Thresholds (Customizable)
| Parameter | Default | Description |
|-----------|---------|-------------|
| `stale_threshold_days` | 7 | Days offline to flag as stale |
| `sla_target_pct` | 95 | Coverage percentage target |
| `shadow_it_window_hours` | 24 | Window for new sensor detection |
| `silent_threshold_hours` | 4 | Hours without events to flag as silent |
| `asset_profiling` | Single: ON, Multi: OFF | Collect detailed asset data |
| `telemetry_health` | Single: ON, Multi: OFF | Check event flow for online sensors |
### Pattern Detection Thresholds (Multi-Org Mode)
| Parameter | Default | Description |
|-----------|---------|-------------|
| `platform_offline_threshold_pct` | 10 | Flag platform if >X% offline |
| `enrollment_cluster_min_sensors` | 5 | Min sensors for enrollment cluster |
| `enrollment_cluster_window_hours` | 2 | Time window for enrollment clustering |
| `sla_failure_alert_pct` | 20 | Alert if >X% of orgs failing SLA |
### Customization Prompt
If user wants to customize, use:
```
AskUserQuestion(
questions=[
{
"question": "What stale threshold should I use?",
"header": "Stale Days",
"options": [
{"label": "3 days", "description": "Aggressive - flag sensors offline 3+ days"},
{"label": "7 days", "description": "Standard - flag sensors offline 7+ days"},
{"label": "14 days", "description": "Relaxed - flag sensors offline 14+ days"},
{"label": "30 days", "description": "Minimal - only flag very stale sensors"}
],
"multiSelect": false
},
{
"question": "What SLA coverage target?",
"header": "SLA Target",
"options": [
{"label": "99%", "description": "Very strict coverage requirement"},
{"label": "95%", "description": "Standard enterprise target"},
{"label": "90%", "description": "Relaxed coverage requirement"}
],
"multiSelect": false
}
]
)
```
---
## Workflow: Single-Org Mode
```
Phase 1: Initialization
|
v
Phase 2: Sensor Discovery & Classification
|
v
Phase 3: Telemetry Health Check (Online Sensors) <-- NEW
|
v
Phase 4: Asset Profiling (Online Sensors) <-- OPTIONAL
|
v
Phase 5: Compliance Check (Expected vs Actual) <-- NEW
|
v
Phase 6: Gap Detection & Risk Scoring
|
v
Phase 7: Report Generation & Remediation
```
### Phase 1: Initialization
#### 1.1 Get Organization
If OID not provided, get the user's organizations:
```bash
limacharlie org list --output yaml
```
If multiple orgs, use `AskUserQuestion` to let user select one.
#### 1.2 Calculate Timestamps
**CRITICAL**: Always calculate timestamps dynamically via bash:
```bash
NOW=$(date +%s)
THRESHOLD_4H=$((NOW - 14400)) # 4 hours ago (telemetry health)
THRESHOLD_24H=$((NOW - 86400)) # 24 hours ago
THRESHOLD_7D=$((NOW - 604800)) # 7 days ago
THRESHOLD_30D=$((NOW - 2592000)) # 30 days ago
echo "Now: $NOW, 4h: $THRESHOLD_4H, 24h: $THRESHOLD_24H, 7d: $THRESHOLD_7D, 30d: $THRESHOLD_30D"
```
#### 1.3 User Confirmation
Before proceeding, confirm scope with user:
```
Organization: {org_name}
Mode: Single-Org (Deep Dive)
Features Enabled:
- Telemetry Health: Yes (flag silent sensors)
- Asset Profiling: Yes (OS, packages, users, services)
- Compliance Check: {Yes if expected_assets provided, else No}
Stale Threshold: 7 days
Silent Threshold: 4 hours
SLA Target: 95%
Proceed with sensor coverage check?
```
### Phase 2: Sensor Discovery & Classification
#### 2.1 Get All Sensors
```bash
limacharlie sensor list --oid <oid> --output yaml
```
#### 2.2 Get Online Sensors
```bash
limacharlie sensor list --online --oid <oid> --output yaml
```
**TIP**: Run both CLI commands in parallel.
#### 2.3 Classify by Offline Duration
Parse the `alive` field (format: "YYYY-MM-DD HH:MM:SS") and calculate hours offline:
| Category | Hours Offline | Description |
|----------|---------------|-------------|
| `online` | 0 | Currently connected |
| `recent_24h` | 1-24 | Recently offline |
| `short_1_7d` | 24-168 | Short-term offline |
| `medium_7_30d` | 168-720 | Medium-term offline |
| `critical_30d_plus` | 720+ | Critical coverage gap |
#### 2.4 Identify New Assets
Check `enroll` timestamp for sensors enrolled in last 24 hours - Related in Data & Analytics
clawarr-suite
IncludedComprehensive management for self-hosted media stacks (Sonarr, Radarr, Lidarr, Readarr, Prowlarr, Bazarr, Overseerr, Plex, Tautulli, SABnzbd, Recyclarr, Unpackerr, Notifiarr, Maintainerr, Kometa, FlareSolverr). Deep library exploration, analytics, dashboard generation, content management, request handling, subtitle management, indexer control, download monitoring, quality profile sync, library cleanup automation, notification routing, collection/overlay management, and media tracker integration (Trakt, Letterboxd, Simkl).
querying-soql
IncludedSOQL query generation, optimization, and analysis with 100-point scoring. Use this skill when the user needs SOQL/SOSL authoring or optimization: natural-language-to-query generation, relationship queries, aggregates, query-plan analysis, and performance or safety improvements for Salesforce queries. TRIGGER when: user writes, optimizes, or debugs SOQL/SOSL queries, touches .soql files, or asks about relationship queries, aggregates, or query performance. DO NOT TRIGGER when: bulk data operations (use handling-sf-data), Apex DML logic (use generating-apex), or report/dashboard queries.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
habit-flow
IncludedAI-powered atomic habit tracker with natural language logging, streak tracking, smart reminders, and coaching. Use for creating habits, logging completions naturally ("I meditated today"), viewing progress, and getting personalized coaching.
app-store-optimization
IncludedApp Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklists, and tracking ranking changes.
visualizing-data
IncludedBuilds dashboards, reports, and data-driven interfaces requiring charts, graphs, or visual analytics. Provides systematic framework for selecting appropriate visualizations based on data characteristics and analytical purpose. Includes 24+ visualization types organized by purpose (trends, comparisons, distributions, relationships, flows, hierarchies, geospatial), accessibility patterns (WCAG 2.1 AA compliance), colorblind-safe palettes, and performance optimization strategies. Use when creating visualizations, choosing chart types, displaying data graphically, or designing data interfaces.