{% extends "base.html" %} {% import "_empty.html" as empty %} {% block title %}Skills{% endblock %} {% block topbar_main %}
No skill package matched. A skill is a directory holding a
SKILL.md, under .claude/skills in a project,
in your home directory, or inside an installed plugin.
Flanner reads those directories and never writes to them. Nothing in a package is executed by a scan.
{% endcall %} {% endif %}{{ item.detail }}
{% if item.skills %}{% for name in item.skills[:12] %}{{ name }}{% if not loop.last %}·{% endif %}{% endfor %} {%- if item.skills | length > 12 %}·and {{ item.skills | length - 12 }} more{% endif %}
{% endif %}Records that a named skill was invoked, when, and by which local session. Not your prompts, not the agent's replies. Nothing leaves this machine. Only explicit invocations are visible: Claude Code shows every skill's description to the model without reporting it, so reads are unknown rather than zero.
Watched on {{ covered }} of {{ usage.coverage.days | length }} days, oldest on the left.
{% endif %}Something was watching throughout, so this is a real zero rather than a gap in the record.
{% endcall %} {% else %} {% call empty.inside('search', 'Nothing has been watching') %}A zero here means nothing rather than “unused”. Turn watching on and this fills in as skills are invoked.
{% endcall %} {% endif %} {% endif %} {# The coverage, spelled out. A closed window still counts as coverage — correctly, something was watching for part of the period — but a reader seeing "nothing was invoked" while the switch reads off needs telling which of those two facts they are looking at. #}{% if usage.coverage.watching %} Watched during {{ usage.coverage.windows }} period{{ '' if usage.coverage.windows == 1 else 's' }} of these {{ usage.window_days }} days{% if not (scope_row and scope_row.observing) %}, and not watching now{% endif %}. {% else %} Nothing watched any part of these {{ usage.window_days }} days. {% endif %} {% if usage.coverage.dropped %} {{ usage.coverage.dropped }} event(s) arrived and could not be stored, so the counts are short by at least that. {% endif %}
Skills stay where their owner put them.
flanner skills adopt <name> keeps a copy flanner can
put back.
A package a teammate sends shows up here and waits: receiving one is not installing it.
{% endcall %} {% endif %} {% if channels %}Following tells you about a new version. It never installs one: that would hand whoever publishes it control of what your agent reads.
{{ r.path }}
{{ r.scope }}{% if r.revision %} · {{ r.revision }}{% endif %}
{% if not r.exists %}not there{% endif %}
{% if not r.active %}not the installed revision{% endif %}
{{ note }}
{% endfor %}