{% extends "base.html" %} {% block title %}{{ project.project_key }} metrics · watchmen{% endblock %} {% block content %}
← {{ project.project_key }}

Efficiency metrics

Daily rollups for the last 30 days. Suggestions + uptake start showing data once the plugin is installed and you submit prompts.
Sessions / 7d
{{ last7.sessions }}
{{ last30.sessions }} in last 30d
Prompts / 7d
{{ last7.prompts }}
{{ "%.1f"|format(last7.prompts / last7.sessions if last7.sessions else 0) }} per session
Tool errors / 7d
{{ last7.tool_errors }}
{{ "%.2f"|format(last7.tool_errors / last7.sessions if last7.sessions else 0) }} per session
Cost / 7d
${{ "%.2f"|format(last7.cost_usd) }}
${{ "%.2f"|format(last30.cost_usd) }} in last 30d
Input tokens / 7d
{{ "{:,}".format(last7.input_tokens) }}
{{ "{:,}".format(last7.cache_read_tokens) }} from cache
Output tokens / 7d
{{ "{:,}".format(last7.output_tokens) }}
{{ "%.2f"|format(last7.output_tokens / last7.sessions if last7.sessions else 0) }}k per session avg
Skill suggestions / 7d
{{ last7.suggestions_fired }}
{% if last7.suggestions_fired %} {{ last7.uptake }} taken ({{ "%.0f"|format(100 * last7.uptake / last7.suggestions_fired) }}% uptake) {% else %} no fires yet {% endif %}
Cache hit ratio / 7d
{% set total_in = last7.input_tokens + last7.cache_creation_tokens + last7.cache_read_tokens %}
{{ "%.0f"|format(100 * last7.cache_read_tokens / total_in if total_in else 0) }}%
cache read / total input

When you work

Last 26 weeks
Prompt activity per day
{% if streak.current or streak.longest %}
🔥 {{ streak.current }}-day current streak Longest: {{ streak.longest }} days{% if streak.longest_end %} (ended {{ streak.longest_end }}){% endif %}
{% endif %}
Day × hour (last 90 days)
{% if peaks %} Peak: {{ peaks[0] }} {{ peaks[1] }} ({{ peaks[2] }} prompts) {% else %} not enough data yet {% endif %}
{% if tool_usage %}

Tool usage (last 30 days)

{% set top_count = tool_usage[0].count %} {% for t in tool_usage %} {% endfor %}
{{ t.tool }}
{% if t.errors %}
{% endif %}
{{ "{:,}".format(t.count) }} {% if t.errors %}{{ t.errors }} err{% endif %}
{% endif %}

Daily breakdown

{% for r in rows %} {% endfor %}
Date Sessions Prompts Errors Input tok Output tok Cost Suggestions Uptake
{{ r.date }} {{ r.sessions or "" }} {{ r.prompts or "" }} {{ r.tool_errors or "" }} {{ "{:,}".format(r.input_tokens) if r.input_tokens else "" }} {{ "{:,}".format(r.output_tokens) if r.output_tokens else "" }} {{ "${:.2f}".format(r.cost_usd) if r.cost_usd > 0 else "" }} {{ r.suggestions_fired or "" }} {% if r.suggestions_fired %}{{ r.uptake }}/{{ r.suggestions_fired }}{% endif %}
Cost estimates use public Anthropic list prices per million tokens. Cache reads price at ~10% of fresh input. Suggestion uptake counts a hit when /<skill> appears in the same session within an hour of the suggestion firing.
{% endblock %}