sensor-health
Generate comprehensive sensor health and status reports across all LimaCharlie organizations. Use when users ask about sensor connectivity, data availability, offline sensors, sensors not reporting events, or fleet-wide health queries (e.g., "show me sensors online but not sending data", "list sensors offline for 7 days across all orgs").
What this skill does
# Sensor Health Reporting Skill
This skill orchestrates parallel sensor health checks across multiple LimaCharlie organizations for fast, comprehensive fleet reporting.
---
## 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) |
---
## When to Use
Use this skill when the user asks about:
- **Connectivity Issues**: "Show me sensors online but not sending data"
- **Offline Sensors**: "List sensors that haven't been online for 7 days"
- **Data Availability**: "Which sensors have no events in the last hour?"
- **Fleet Health**: "Find all offline sensors across my organizations"
- **Cross-Org Reports**: "Show me sensor health across all my orgs"
## What This Skill Does
This skill orchestrates sensor health reporting by:
1. Getting the list of user's organizations
2. Spawning parallel `lc-essentials:sensor-health-reporter` agents (one per org)
3. Aggregating results from all agents
4. Presenting a unified report
**Key Advantage**: By running one agent per organization in parallel, this skill can check dozens of organizations simultaneously, dramatically reducing execution time.
## How to Use
### Step 1: Parse User Query
Identify the key parameters:
- **Time window**: Last hour, 7 days, 30 days, etc.
- **Status filter**: Online, offline, all sensors
- **Data availability**: Has events, no events, sparse events
- **Scope**: All orgs (default) or specific orgs
### Step 2: Get Organizations
Use the LimaCharlie CLI to get the user's organizations:
```bash
limacharlie org list --output yaml
```
### Step 3: Spawn Parallel Agents
For each organization, spawn a `lc-essentials:sensor-health-reporter` agent in parallel:
```
Task(
subagent_type="lc-essentials:sensor-health-reporter",
prompt="Check sensors in organization '{org_name}' (OID: {oid}) that are online but have not sent telemetry in the last {timeframe}."
)
```
**CRITICAL**: Spawn ALL agents in a SINGLE message with multiple Task tool calls to run them in parallel:
```
<message with multiple Task blocks>
Task 1: Check org 1
Task 2: Check org 2
Task 3: Check org 3
...
</message>
```
Do NOT spawn them sequentially - that defeats the purpose of parallelization.
### Step 4: Aggregate Results
Once all agents return:
1. Parse each agent's findings
2. Count total problematic sensors across all orgs
3. Group by organization
4. Identify patterns or anomalies
### Step 5: Generate Report
Present a unified report with:
- **Executive Summary**: Total sensors with issues across all orgs
- **Per-Org Breakdown**: Findings from each organization
- **Context**: What the findings mean
- **Recommendations**: Optional suggestions
## Example Workflow
**User Query**: "Show me sensors online but not reporting events in the last hour"
**Step 1**: Get current timestamp and calculate 1 hour ago
```bash
current=$(date +%s)
one_hour_ago=$(date -d '1 hour ago' +%s)
```
**Step 2**: Get org list
```bash
limacharlie org list --output yaml
```
**Step 3**: Spawn parallel agents (example with 3 orgs)
```
# Single message with 3 Task calls
Task(subagent_type="lc-essentials:sensor-health-reporter", prompt="Check org1...")
Task(subagent_type="lc-essentials:sensor-health-reporter", prompt="Check org2...")
Task(subagent_type="lc-essentials:sensor-health-reporter", prompt="Check org3...")
```
**Step 4**: Aggregate
```
Org1: 5 sensors with no data
Org2: 12 sensors with no data
Org3: 0 sensors with issues
Total: 17 sensors
```
**Step 5**: Present report
```markdown
## Sensors Online But Without Events (Last Hour)
**Total: 17 sensors across 2 organizations**
### org1 (5 sensors)
- sensor-id-1
- sensor-id-2
...
### org2 (12 sensors)
- sensor-id-6
...
### Analysis
These sensors are connected but not generating events...
```
## Time Window Calculations
Use bash to calculate timestamps:
```bash
# Current time
date +%s
# X hours ago
date -d 'X hours ago' +%s
# X days ago
date -d 'X days ago' +%s
# X weeks ago
date -d 'X weeks ago' +%s
```
## Performance Tips
1. **Always spawn agents in parallel** - Use a single message with multiple Task calls
2. **Limit scope if needed** - For quick checks, allow user to specify specific orgs
3. **Sub-agents define their own model** - No need to specify model in Task calls
4. **Handle errors gracefully** - If one org fails, continue with others
5. **Cache org list** - If doing multiple related queries, reuse the org list
## Error Handling
If an agent fails:
- Log the error for that organization
- Continue processing other organizations
- Include error summary in final report
- Don't let one org failure block the entire report
## Report Format Template
```markdown
## {Query Title}
**Summary**: {Total count} sensors across {N} organizations
### {Org Name 1} ({count} sensors)
- {sensor-id-1}
- {sensor-id-2}
...
### {Org Name 2} ({count} sensors)
- {sensor-id-x}
...
### Organizations with No Issues
- {Org Name 3}
- {Org Name 4}
### Analysis
{Context about findings}
### Recommendations
{Optional suggestions}
```
## Important Constraints
- **Parallel Execution**: ALWAYS spawn agents in parallel (single message, multiple Tasks)
- **OID Format**: Organization ID is a UUID, not the org name
- **Time Limits**: Data availability checks must be <30 days
- **Model**: Sub-agents define their own model in frontmatter
- **Error Tolerance**: Continue with partial results if some orgs fail
## Related Skills
- `sensor-tasking` - For sending commands to sensors (live response, data collection)
- `sensor-coverage` - For comprehensive asset inventory and coverage gap analysis
## Related CLI Commands
- `limacharlie org list` - Get organizations
- `limacharlie sensor list --online --oid <oid>` - Get online sensor list (used by agent)
- `limacharlie event retention --sid <sid> --oid <oid>` - Check data timeline (used by agent)
- `limacharlie sensor list --oid <oid>` - Get all sensors (used by agent for offline checks)
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.