Skip to content
Back to skills

Telemetry Steward

ASecurity

Lightweight append-only telemetry layer for tracking session health, agent performance, and decision quality across FlowDeck operations.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 9, 2026
ai-agentsgobashapibackendperformance

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 9, 2026

npx -y skills add alisattorov06/ali-kiro --skill telemetry-steward --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Telemetry Steward?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Telemetry Steward
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/alisattorov06-telemetry-steward/badge)](https://www.skillsdirectory.com/skills/alisattorov06-telemetry-steward)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: telemetry-steward
description: Lightweight append-only telemetry layer for tracking session health, agent performance, and decision quality across FlowDeck operations.
origin: FlowDeck
---

# Telemetry Steward

FlowDeck generates a steady stream of operational signals — context compactions, agent handoffs, recorded decisions, readiness scores. Telemetry Steward captures these as structured, append-only events so operators can observe patterns, diagnose drift, and validate improvement over time.

## Purpose

Telemetry answers three questions:

1. **Context health** — Are we pruning, compacting, or checkpointing effectively? Are token savings trending up or down?
2. **Agent performance** — Which agents are fastest? Which fail most often? Where does routing latency spike?
3. **Decision quality** — Are decisions backed by evidence? Is confidence calibrated to actual risk?

It is not a control plane. It does not trigger actions. It exists purely for observability, retrospection, and baseline-setting.

## Storage

All events are written to `~/.fd-plan/<slug>/.codebase/TELEMETRY.jsonl`.

- One JSON object per line. No outer array.
- Append only. Never rewrite the file in place.
- Each line is self-contained and independently parseable.
- Invalid lines are skipped during read, not repaired.

## Event Schema

Every event has a top-level `type` field. All other fields are type-specific.

### `context_action`

Recorded when the context steward prunes, compacts, or checkpoints.

```json
{
  "type": "context_action",
  "action": "prune",
  "tokens_before": 12400,
  "tokens_after": 8200,
  "timestamp": "2026-06-11T09:23:17.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `action` | string | `"prune"`, `"compact"`, or `"checkpoint"` |
| `tokens_before` | integer | Context size in tokens before the action |
| `tokens_after` | integer | Context size in tokens after the action |
| `timestamp` | ISO 8601 | When the action occurred |

### `agent_routing`

Recorded when the orchestrator dispatches work to an agent.

```json
{
  "type": "agent_routing",
  "agent": "backend-coder",
  "category": "implementation",
  "task_type": "bugfix",
  "duration_ms": 14520,
  "success": true,
  "timestamp": "2026-06-11T09:45:02.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `agent` | string | Agent that executed the task |
| `category` | string | High-level bucket: `"implementation"`, `"research"`, `"review"`, `"debug"`, `"docs"` |
| `task_type` | string | Specific task class: `"feature"`, `"bugfix"`, `"refactor"`, `"plan"`, `"audit"` |
| `duration_ms` | integer | Wall-clock time from dispatch to completion |
| `success` | boolean | Did the agent report success? |
| `timestamp` | ISO 8601 | When routing completed |

### `decision_recorded`

Recorded when a decision is persisted via `decision-trace`.

```json
{
  "type": "decision_recorded",
  "decision_id": "auth-refactor-2026-06-11",
  "risk_level": "medium",
  "confidence": 0.85,
  "has_evidence": true,
  "timestamp": "2026-06-11T10:12:44.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `decision_id` | string | Identifier from `decision-trace` |
| `risk_level` | string | `"low"`, `"medium"`, or `"high"` |
| `confidence` | number | 0.0 to 1.0, if available |
| `has_evidence` | boolean | Were evidence entries provided? |
| `timestamp` | ISO 8601 | When the decision was recorded |

### `readiness_check`

Recorded after a deploy-check or pre-flight verification run.

```json
{
  "type": "readiness_check",
  "status": "pass",
  "score": 0.94,
  "failing_checks": ["dependency-audit"],
  "timestamp": "2026-06-11T11:00:00.000Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `status` | string | `"pass"`, `"warn"`, or `"fail"` |
| `score` | number | 0.0 to 1.0 aggregate readiness score |
| `failing_checks` | string[] | List of check names that did not pass |
| `timestamp` | ISO 8601 | When the check completed |

## Retention Policy

- **Active window**: 90 days of events remain in `~/.fd-plan/<slug>/.codebase/TELEMETRY.jsonl`.
- **Monthly rotation**: At the start of each month, rename the current file to `~/.fd-plan/<slug>/.codebase/TELEMETRY-YYYY-MM.jsonl` and start a fresh `TELEMETRY.jsonl`.
- **No automatic deletion**: Archived monthly files are never deleted without explicit operator action. If disk space is a concern, the operator moves old archives to cold storage.
- **Rationale**: Aggressive rotation destroys the long-term pattern signal. Three months of continuous data is the minimum for detecting trends like "agent routing latency creeps up on Fridays" or "context savings degrade after 20+ message sessions."

## Consumption Patterns

### Dashboard

A dashboard agent or external tool reads `~/.fd-plan/<slug>/.codebase/TELEMETRY.jsonl` directly and renders:

- Daily context savings (tokens_before - tokens_after)
- Agent success rate by category
- Decision confidence distribution
- Readiness score trend over the last 30 days

### Failure Replay Engine

Before recording a new failure, the failure-replay engine queries telemetry for correlated signals:

- Did `agent_routing` success rate drop before this failure?
- Were there recent `decision_recorded` entries with low confidence and no evidence?
- Did `readiness_check` scores degrade in the days leading up to the incident?

### Agent Performance Baselines

Agents query their own historical telemetry to set expectations:

- "My median `backend-coder` bugfix duration is 8 minutes. This task is taking 25 minutes — something is wrong."
- "Context actions in this repo typically save 35% of tokens. Today's savings are 12% — the compaction strategy may need tuning."

## Aggregation Recipe

**Weekly context savings**

To compute tokens reclaimed by pruning in the last 7 days:

1. Filter lines where `type == "context_action"` and `action == "prune"`.
2. For each matching line, compute `tokens_before - tokens_after`.
3. Sum the differences.

```bash
jq -c 'select(.type == "context_action" and .action == "prune") | (.tokens_before - .tokens_after)' ~/.fd-plan/<slug>/.codebase/TELEMETRY.jsonl | awk '{s+=$1} END {print s}'
```

## Anti-Patterns

- **Do not store secrets or PII in telemetry.** Event payloads must never contain API keys, tokens, user emails, or conversation content. If you need to correlate with a sensitive ID, hash it first.
- **Do not use telemetry for real-time control.** Telemetry is observability, not a trigger. Do not write events and then read them in the same session to decide what to do next. Use state files or direct signals for control logic.
- **Do not rotate too aggressively.** Rotating or truncating `TELEMETRY.jsonl` more often than monthly makes it impossible to detect multi-week patterns like gradual agent slowdown or declining decision quality.

## Cross-References

| Component | Relationship |
|-----------|-------------|
| `context-steward` | Emits `context_action` events during prune/compact/checkpoint cycles |
| `decision-trace` | Emits `decision_recorded` events for every recorded decision |
| `failure-replay-engine` | Queries telemetry for pre-failure signal correlation |
| dashboard | Reads `TELEMETRY.jsonl` to render operational charts |

## Guidance

- Write events synchronously at the point of action. Do not buffer or batch — a single line append is cheap and eliminates flush complexity.
- If `TELEMETRY.jsonl` is missing on first write, create it. Do not fail the operation because telemetry is unavailable.
- Validate event structure before appending. A malformed line corrupts nothing (readers skip it), but it wastes space and loses signal.
- Prefer explicit `null` over omitting a field. A missing `confidence` is ambiguous (not recorded vs. not applicable); `confidence: null` is clear.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.