{% set has_data = a and a.total > 0 %}

SkillRunes

Session observability {% if has_data %}{{ a.total }} sessions{% endif %}
{% if not has_data %}

No sessions analysed yet — run skillrunes run first.

{% else %}

Overview

Sessions
{{ a.total }}
Clean sessions
{{ ((a.n_clean / a.total) * 100) | round | int }}%
{{ a.n_clean }} clean · {{ a.n_partial }} partial · {{ a.n_failed }} failed
Avg tokens / session
{{ "{:,}".format(a.avg_tokens) }}
peak {{ "{:,}".format(a.max_tokens) }}
Avg messages / session
{{ a.avg_messages }}
Avg tok / message
{{ "{:,}".format(a.avg_efficiency) }}
efficiency proxy
Context compactions
{{ a.compaction_count }}
of {{ a.total }} sessions
Patterns extracted
{{ a.total_patterns }}
across all sessions

Session quality & failure patterns

Outcome distribution

Clean · Partial · Failed
Clean {{ a.n_clean }} {{ ((a.n_clean / a.total) * 100) | round | int }}%
Partial {{ a.n_partial }} {{ ((a.n_partial / a.total) * 100) | round | int }}%
Failed {{ a.n_failed }} {{ ((a.n_failed / a.total) * 100) | round | int }}%

Top failure patterns

Most repeated failure strings across sessions
{% if metrics and metrics.top_failure_patterns %}
{% for fp in metrics.top_failure_patterns %}
{{ loop.index }} {{ fp.pattern }}
{% endfor %}
{% else %}

No repeated failures.

{% endif %}

Token usage

Tokens per session

Log₁₀ scale — handles large outliers without distortion

Token efficiency (tokens / message)

Lower = more focused exchanges per turn

Session complexity & learning

Messages per session

Back-and-forth turn count

Patterns extracted per session

Learnable insights identified by SkillRunes

Cumulative pattern growth

Knowledge base growing over sessions

Worked vs failed observations per session

Observations breakdown

Green = things that worked · Red = things that failed · Stacked per session

All sessions

{% for s in sessions %} {% if s.what_worked and not s.what_failed %}{% set st = "clean" %} {% elif s.what_worked and s.what_failed %}{% set st = "partial" %} {% else %}{% set st = "failed" %}{% endif %} {% set eff = (s.token_count / s.message_count) | round | int if s.message_count else 0 %} {% endfor %}
Status Goal ID Tokens Tok/msg Msgs Duration Patterns
{{ st | capitalize }} {% if s.compaction_occurred %}compacted{% endif %}
{{ s.goal }}
{{ s.session_id[:8] }} {{ "{:,}".format(s.token_count) }} {{ "{:,}".format(eff) }} {{ s.message_count }} {% set d = s.duration_seconds %} {% if d >= 3600 %}{{ "%.1f"|format(d/3600) }}h {% elif d >= 60 %}{{ (d/60)|round|int }}m {% else %}{{ d|round|int }}s{% endif %} {{ s.patterns | length }}

SKILL.md version history

{% if skills %} {% for sv in skills | reverse %}
v{{ sv.version }} {{ sv.timestamp.strftime("%Y-%m-%d %H:%M") if sv.timestamp else "" }} {{ sv.change_summary[:120] if sv.change_summary else "No summary" }}
{{ sv.content | escape_html }}
{% endfor %} {% else %}

No skill versions yet.

{% endif %}
{% endif %}{# has_data #}