# Skill Monitor

Analyze skill effectiveness across sessions.

- Repository: https://github.com/oliver-kriska/claude-elixir-phoenix (572 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add oliver-kriska/claude-elixir-phoenix --skill skill-monitor -g -a claude-code -y`
Codex: `npx skills add oliver-kriska/claude-elixir-phoenix --skill skill-monitor -g -a codex -y`
Cursor: `npx skills add oliver-kriska/claude-elixir-phoenix --skill skill-monitor -g -a cursor -y`
Gemini CLI: `npx skills add oliver-kriska/claude-elixir-phoenix --skill skill-monitor -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add oliver-kriska/claude-elixir-phoenix`

## Description

Analyze skill effectiveness across sessions. Computes per-skill metrics (action rate, friction, outcomes), identifies degrading skills, and generates improvement recommendations. Requires session-scan data in metrics.jsonl.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Skill Monitor

Closed-loop skill effectiveness monitoring. Reads session metrics,
computes per-skill signals, identifies what's working and what needs
improvement.

Inspired by the deploy-monitor-evaluate-improve feedback loop:
skills get better over time instead of staying static.

## Requirements

Requires `.claude/session-metrics/metrics.jsonl` from `/session-scan`.
If no data: suggest running `/session-scan` first.

## Usage

```
/skill-monitor                     # Dashboard: all skills
/skill-monitor --skill review      # Deep-dive on one skill
/skill-monitor --improve           # Generate improvement recommendations
/skill-monitor --window 30d        # Change comparison window (default: 7d)
```

## What Main Context Does

### Step 1: Parse Arguments

Extract from `$ARGUMENTS`:

- **`--skill NAME`**: Focus on one skill (e.g., `review`, `plan`, `investigate`)
- **`--improve`**: Spawn analysis agent for improvement recommendations
- **`--window PERIOD`**: Comparison window (`7d`, `30d`, `all`; default: `7d`)

### Step 2: Load Metrics

Read `.claude/session-metrics/metrics.jsonl`. For each entry, extract
the `skill_effectiveness` field (added by compute-metrics.py v2).

Filter by window period. Count sessions with and without skill usage.

If no `skill_effectiveness` data exists in metrics: "Metrics were
computed before skill tracking was added. Run `/session-scan --rescan`
to recompute."

**OTel `invocation_trigger` (CC v2.1.126+)**: when `compute-metrics.py`
ingests `claude_code.skill_activated` events, each invocation carries
an `invocation_trigger` of `"user-slash"`, `"claude-proactive"`, or
`"nested-skill"`. If absent (older sessions), default to
`"unknown"`, do NOT assume `"user-slash"`.

### Step 3: Compute Per-Skill Aggregates

For each skill found across all sessions, aggregate:

The rest: https://github.com/oliver-kriska/claude-elixir-phoenix/blob/HEAD/.claude/skills/skill-monitor/SKILL.md
