{% extends "base.html" %} {% block title %}watchmen mission control{% endblock %} {% block head_extra %} {% endblock %} {% block content %} {# The global _action_banner.html is intentionally NOT included here. The "Next actions" section below renders the same data with the same severity rails — duplicating both at the top of the page reads as repetitive and pushes the impact strip below the fold. #} {% if changelog_version and changelog_body_html %} {% endif %}

Mission control

Skill activity, friction trends, and what to run next — across every tracked project.

{# Three KPI cards: skill calls, tool errors/session, active repos. Comparison window is this-7d vs prior-7d. delta_pct is None when the prior window was empty — template renders "—" in that case. #} {% macro fmt_delta(d, polarity='up_is_good') -%} {%- if d.delta_pct is none -%} {%- elif d.delta_pct == 0 -%} ±0% {%- else -%} {%- set up = d.delta_pct > 0 -%} {%- if polarity == 'up_is_good' -%} {%- set cls = 'wm-kpi__delta--up' if up else 'wm-kpi__delta--down' -%} {%- else -%} {%- set cls = 'wm-kpi__delta--bad-up' if up else 'wm-kpi__delta--good-down' -%} {%- endif -%} {{ '↑' if up else '↓' }} {{ '%+.0f'|format(d.delta_pct) }}% {%- endif -%} {%- endmacro %}
Skill calls · 7d
{{ impact.skill_calls.this }}
prior week {{ impact.skill_calls.prior }} · {{ fmt_delta(impact.skill_calls, 'up_is_good') }}
Tool errors · per session
{{ '%.2f'|format(impact.tool_errors.this) }}
prior week {{ '%.2f'|format(impact.tool_errors.prior) }} · {{ fmt_delta(impact.tool_errors, 'down_is_good') }}
Active repos · 7d
{{ impact.active_repos.this }}
prior week {{ impact.active_repos.prior }} · {{ fmt_delta(impact.active_repos, 'up_is_good') }}
{% if leaderboard %}

Skill activity · last 7 days

{{ leaderboard|sum(attribute='count') }} invocations across {{ leaderboard|length }} repo{{ 's' if leaderboard|length != 1 else '' }}
{% for r in leaderboard %}
{% if r.project_key %} {{ r.project_name }} {% else %} {{ r.project_name }} {% endif %}
{{ r.count }} calls · {{ r.skills_curated }} skill{{ 's' if r.skills_curated != 1 else '' }}
{% endfor %}
{% endif %} {% if sparkline_data.skill_calls or sparkline_data.tool_errors %}
Skill calls · 12 weeks
Total Skill tool invocations per ISO week.
{% if sparkline_data.skill_calls %}
{% else %}
No skill invocations yet.
{% endif %}
Tool errors per session · 12 weeks
Weekly mean across all tracked sessions. Lower is better.
{% if sparkline_data.tool_errors %}
{% else %}
No sessions captured yet.
{% endif %}
{% endif %}

Next actions

{{ next_actions|length }} queued
{% if next_actions %} {% for a in next_actions %}
{% if a.href %}{{ a.title }} {% else %}{{ a.title }}{% endif %}
{{ a.reason }}
{% if a.run_action %}
{% endif %}
{% endfor %} {% else %}
Nothing pending. Every tracked project is up to date.
{% endif %}

Tracked projects

Run watchmen track <key> to add more
{% if status_tiles %} {% else %}
No tracked projects yet. Run watchmen track <key> --repo <path>.
{% endif %}
{% if runs %}

Recent runs

{% for r in runs %} {% endfor %}
Started Project Kind Status Notes
{{ r.started_at[:19] }} {{ r.project_key }} {{ r.kind }} {% if r.status == 'ok' %}✓ ok {% elif r.status == 'running' %}● running {% else %}✗ {{ r.status }}{% endif %} {{ r.notes or "" }}
{% endif %} {% endblock %}