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

{{ project.project_key }}

{{ project.source_repo|replace("/Users/" ~ project.source_repo.split("/")[2], "~") if project.source_repo and project.source_repo.startswith("/Users/") else project.source_repo }}
View metrics →
View curator runs →
View thesis →
Prune skills →
{% include "_action_banner.html" %}
Skills
{{ skills|length }}
Thesis days
{{ thesis_days|length }}
Last analyst day
{{ project.last_analyst_day or "·" }}
{# ─── Impact: per-project before/after ────────────────────────────────── Renders when curator has run at least once AND we have ≥3 sessions on each side of that date. Otherwise the section explains why — never silently disappears. All numbers are descriptive; the verdict line names the direction but does not claim causation. #}

Impact

Sessions before vs after curator first landed for this repo. Correlation only — not a controlled experiment.
{% if impact.treatment_date %}
first curated {{ impact.days_since_treatment }}d ago ({{ impact.treatment_date }})
{% endif %}
{% if impact.enough_data %}
Tool errors per session · 16 weeks
Before vs after curator
pre post
Sessions {{ impact.pre.sessions_n }} {{ impact.post.sessions_n }}
Median tool errors {{ '%.1f'|format(impact.pre.median_errors) }} {{ '%.1f'|format(impact.post.median_errors) }}
Median prompts {{ '%.0f'|format(impact.pre.median_prompts) }} {{ '%.0f'|format(impact.post.median_prompts) }}
Median cost ${{ '%.2f'|format(impact.pre.median_cost) }} ${{ '%.2f'|format(impact.post.median_cost) }}
{% if impact.verdict %}
Direction: {{ impact.verdict }}.
{% endif %}
{% else %}
Not enough data yet. {{ impact.verdict_reason }} {% if impact.treatment_date %}
Keep using {{ project.project_key }}; the comparison will fill in as more sessions land.
{% endif %}
{% endif %}
{% if subagent_metrics and subagent_metrics.has_data %}

Subagent usage

{{ subagent_metrics.sessions }} session{{ "" if subagent_metrics.sessions == 1 else "s" }} · ${{ '%.2f'|format(subagent_metrics.total_cost) }} total
{% set share = subagent_metrics.cost_share_pct %} {% set share_label = '—' if share is none else ('%.0f'|format(share) + '%') %} {% if share is none %} {% set share_color = 'text-gray-500 bg-gray-100' %} {% elif share < 10 %} {% set share_color = 'text-red-700 bg-red-50' %} {% elif share < 30 %} {% set share_color = 'text-amber-700 bg-amber-50' %} {% else %} {% set share_color = 'text-green-700 bg-green-50' %} {% endif %}
Main thread
${{ '%.2f'|format(subagent_metrics.main_cost) }}
{{ subagent_metrics.sessions - subagent_metrics.subagent_sessions }} session{{ "" if (subagent_metrics.sessions - subagent_metrics.subagent_sessions) == 1 else "s" }}
Subagents
${{ '%.2f'|format(subagent_metrics.sub_cost) }}
{{ subagent_metrics.subagent_sessions }} session{{ "" if subagent_metrics.subagent_sessions == 1 else "s" }}
Cost share
of project spend in subagents
{% if subagent_metrics.candidates %}
Top main sessions — delegation candidates, ordered by cost
{% for c in subagent_metrics.candidates %} {% endfor %}
session agent started cost tokens tools
{{ c.session_id[:12] }} {{ c.agent }} {{ (c.started_at or '')[:10] }} ${{ '%.2f'|format(c.cost_usd) }} {% if c.total_tokens >= 1000000 %}{{ '%.1f'|format(c.total_tokens / 1000000) }}M{% else %}{{ '%.0f'|format(c.total_tokens / 1000) }}k{% endif %} {{ '{:,}'.format(c.tool_use_count) }}
{% endif %} {% if share is not none and share < 10 and subagent_metrics.total_cost >= 10 %}
Only {{ share_label }} of this project's spend goes through subagents. Large main-thread sessions like the ones above are the strongest candidates for delegating work, which lets the parent thread keep a smaller context window and routes routine search/read tasks to focused subagents.
{% endif %}
{% endif %} {% if skills %}

Skills

{% for s in skills %}
{{ s.slug }}
{{ s.description }}
{{ s.script_count }} script{{ "" if s.script_count == 1 else "s" }}
{% endfor %}
{% endif %} {% if claude_md %}

CLAUDE.md

{{ claude_md|safe }}
{% else %}
No CLAUDE.md generated yet. Run watchmen curate {{ project.project_key }}.
{% endif %} {% endblock %}