/ijfw-metrics
Internal session metrics tracking. Auto-triggered at session boundaries. Tracks tokens, agent usage, efficiency gains. View with /ijfw-status.
$ npx -y skills add FerroxLabs/ijfw --skill ijfw-metrics --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/ijfw-metrics
Context preview
The summary Claude sees to decide when to auto-load this skill.
Internal session metrics tracking. Auto-triggered at session boundaries. Tracks tokens, agent usage, efficiency gains. View with /ijfw-status.
SKILL.md
ijfw-metrics.SKILL.mdname: ijfw-metrics
description: "Internal session metrics tracking. Auto-triggered at session boundaries. Tracks tokens, agent usage, efficiency gains. View with /ijfw-status."
IJFW Metrics -- Internal Tracking
Lightweight metrics captured at session boundaries via hooks. Zero per-turn cost. All tracking happens in the Stop hook.
What We Track
At each session end, append to `.ijfw/metrics/sessions.jsonl`:
{
"timestamp": "2026-04-13T14:30:00Z",
"session_id": "<session-id>",
"duration_minutes": 45,
"turns": 23,
"mode": "smart",
"effort": "high",
"agents_dispatched": {
"scout": 8,
"builder": 12,
"architect": 3
},
"memory_ops": {
"stores": 5,
"recalls": 2,
"searches": 1
},
"skills_loaded": ["ijfw-core", "ijfw-commit", "ijfw-review"],
"compactions": 1,
"handoff_generated": true,
"routing": "OpenRouter + local model"
}Derived Metrics (calculated on /ijfw-status)
From the JSONL log, compute:
**Efficiency:**
- Average turns per session
- Agent distribution (% scout vs builder vs architect)
- Estimated token savings from model routing:
- scout turns x (opus_price - haiku_price) = routing savings
- builder turns x (opus_price - sonnet_price) = routing savings
**Quality:**
- Sessions with handoff generated (continuity metric)
- Memory operations per session (knowledge accumulation)
- Compaction count (context pressure indicator)
- Skills loaded per session (specialisation usage)
**Cost Projection:** Using Anthropic pricing (per 1M tokens):
- Haiku: $0.25 input / $1.25 output
- Sonnet: $3 input / $15 output
- Opus: $15 input / $75 output
If smart routing sent 40% of turns to Haiku instead of Opus:
- Savings per 1K output tokens: $73.75 (Opus→Haiku)
- At 50 turns/session, ~500 output tokens/turn average:
- Per session: ~$0.92 saved on routed turns alone
Status Display Format
When user runs `/ijfw-status` or asks about performance:
IJFW Status
Mode: smart | Effort: high | OpenRouter
This Session:
12 turns | 3 agents dispatched | 2 decisions stored
All Time (47 sessions):
Smart routing: 340 turns -> scout, 580 -> builder, 127 -> architect
Estimated savings: ~$43 in model routing
Memory: 89 decisions, 12 patterns, 4 consolidations
Continuity: 94% sessions with handoff
Context health: 34% used | Next compact: ~66% threshold
---------------------------------------
Positive framing. Show what IJFW has done for you. Never show negatives or waste metrics.
Read more
name: ijfw-metrics description: "Internal session metrics tracking. Auto-triggered at session boundaries. Tracks tokens, agent usage, efficiency gains. View with /ijfw-status."
IJFW Metrics -- Internal Tracking
Lightweight metrics captured at session boundaries via hooks. Zero per-turn cost. All tracking happens in the Stop hook.
What We Track
At each session end, append to `.ijfw/metrics/sessions.jsonl`:
{
"timestamp": "2026-04-13T14:30:00Z",
"session_id": "<session-id>",
"duration_minutes": 45,
"turns": 23,
"mode": "smart",
"effort": "high",
"agents_dispatched": {
"scout": 8,
"builder": 12,
"architect": 3
},
"memory_ops": {
"stores": 5,
"recalls": 2,
"searches": 1
},
"skills_loaded": ["ijfw-core", "ijfw-commit", "ijfw-review"],
"compactions": 1,
"handoff_generated": true,
"routing": "OpenRouter + local model"
}Derived Metrics (calculated on /ijfw-status)
From the JSONL log, compute:
**Efficiency:**
- Average turns per session
- Agent distribution (% scout vs builder vs architect)
- Estimated token savings from model routing:
- scout turns x (opus_price - haiku_price) = routing savings
- builder turns x (opus_price - sonnet_price) = routing savings
**Quality:**
- Sessions with handoff generated (continuity metric)
- Memory operations per session (knowledge accumulation)
- Compaction count (context pressure indicator)
- Skills loaded per session (specialisation usage)
**Cost Projection:** Using Anthropic pricing (per 1M tokens):
- Haiku: $0.25 input / $1.25 output
- Sonnet: $3 input / $15 output
- Opus: $15 input / $75 output
If smart routing sent 40% of turns to Haiku instead of Opus:
- Savings per 1K output tokens: $73.75 (Opus→Haiku)
- At 50 turns/session, ~500 output tokens/turn average:
- Per session: ~$0.92 saved on routed turns alone
Status Display Format
When user runs `/ijfw-status` or asks about performance:
IJFW Status Mode: smart | Effort: high | OpenRouter This Session: 12 turns | 3 agents dispatched | 2 decisions stored All Time (47 sessions): Smart routing: 340 turns -> scout, 580 -> builder, 127 -> architect Estimated savings: ~$43 in model routing Memory: 89 decisions, 12 patterns, 4 consolidations Continuity: 94% sessions with handoff Context health: 34% used | Next compact: ~66% threshold ---------------------------------------
Positive framing. Show what IJFW has done for you. Never show negatives or waste metrics.
IJFW — It Just F*cking Works. Ferrox Labs' local-first infrastructure for AI coding agents: shared memory, smart routing, multi-AI cross-audits, disciplined workflow.
Repo: FerroxLabs/ijfw
Other skills on ijfw.
- /ijfw-agents-md
Maintain canonical AGENTS.md (open spec). Trigger: 'agents.md', 'update AGENTS.md', or auto-fired by ijfw-team after agent generation.
Open skill - /ijfw-auto-memorize
Session-end auto-extraction of lessons, errors, fixes, and user feedback into structured memory. Fires at session end. Requires consent on first run.
Open skill - /ijfw-commit
Terse conventional commits. Trigger: commit, git commit, /ijfw-commit
Open skill - /ijfw-complete-milestone
Use when a milestone is shipping and you need to archive its artifacts, generate a summary, and seed the next milestone. Trigger: 'milestone complete', 'ship milestone', 'wrap milestone', 'complete milestone <id>', /ijfw-complete-milestone.
Open skill - /ijfw-compress
Compress memory/context files into terse form. Trigger: /compress, compress file
Open skill - /ijfw-compute
Use when the user says: 'compute', 'crunch this', 'analyze logs', 'aggregate the data', 'run a script', 'dedupe', 'count by', 'top N', or any data-shaping ask. Replaces dumping raw data into context with sandboxed script execution.
Open skill

