Skip to content
Documentation
Skill

/tt

See which docs your AI actually discovers with local, zero-token telemetry. Subcommands; /tt status, /tt watch [demo|replay], /tt insights, /tt instructions, /tt suggestions, /tt badge, /tt gate, /tt note <text>, /tt doctor, /tt setup, /tt uninstall, /tt help.

From plugin
trigger-tree
141 skill4 hooks
Install
$ npx -y skills add Hedde/trigger_tree --skill tt --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/tt

Context preview

The summary Claude sees to decide when to auto-load this skill.

See which docs your AI actually discovers with local, zero-token telemetry. Subcommands; /tt status, /tt watch [demo|replay], /tt insights, /tt instructions, /tt suggestions, /tt badge, /tt gate, /tt note <text>, /tt doctor, /tt setup, /tt uninstall, /tt help.

SKILL.md

tt.SKILL.md
name: tt
description: See which docs your AI actually discovers with local, zero-token telemetry. Subcommands; /tt status, /tt watch [demo|replay], /tt insights, /tt instructions, /tt suggestions, /tt badge, /tt gate, /tt note <text>, /tt doctor, /tt setup, /tt uninstall, /tt help.
disable-model-invocation: true
allowed-tools: Bash, Read, Write, Artifact
arguments:
  - subcommand
  - option

/tt — trigger-tree

Execute the subcommand in `$1` (option/text in `$2` and beyond; `$ARGUMENTS` holds everything).

**Output discipline — the most important rule:** work silently. No plan up front, no intermediate status lines, no explanation of what you are about to do or just did. Execute the steps and show only the end result in the format specified per subcommand below. Report an error in exactly one line.

**Terminology — maturity model:** a file with zero reads is **untouched**, never "dead". Only when the stats JSON reports `maturity: "mature"` may untouched files be presented as **dead-path candidates**. During `cold-start` and `warming` the measurement is simply too young to judge.

Scripts live in `${CLAUDE_PLUGIN_ROOT}/scripts/`. Project data lives in `${CLAUDE_PROJECT_DIR}/.trigger-tree/`.

`$1` = "help" or empty

Show exactly this, nothing above or below it:

> **🌳 trigger-tree** — measures which documentation your agents actually use > > | Command | Does | > |---------|------| > | `/tt status` | Snapshot: current heat, lifetime reads, untouched paths | > | `/tt watch` | Live dashboard; recency colors, heat bars, injected context, privacy settings, and focus/hot/cold/A–Z/Z–A sorting | > | `/tt watch demo` | Dashboard with synthetic events (writes nothing) | > | `/tt watch replay` | Dashboard replaying the real history, accelerated | > | `/tt insights` | Analysis report: heat/cold map, untouched paths, hunting, trend + HTML | > | `/tt instructions` | Per-directive adherence, observability, and always-loaded cost | > | `/tt suggestions` | Max 5 prioritized, concrete router fixes — apply after confirmation | > | `/tt badge` | Write `.trigger-tree/badge.json`; immature data publishes only `measuring…` | > | `/tt note <text>` | Annotate the timeline (e.g. "sharpened UX router") — shows up in the trend | > | `/tt doctor` | Verify hooks, privacy, statusline, and telemetry with actionable fixes | > | `/tt setup [truncate\|hash\|off]` | Wire the project; choose recognizable previews or privacy-first prompt markers | > | `/tt gate` | Deterministic discoverability score; CI-ready gate with committed baseline | > | `/tt uninstall` | Remove statusline wiring; keep local telemetry for explicit deletion | > | `/tt help` | This overview | > > Telemetry runs automatically via hooks; the statusline shows the live session counter.

`$1` = "status"

1. Silently run `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/tt-stats.py" --client claude` and read the JSON. 2. Show only this block:

> **🌳 trigger-tree status** _(period: <observed_from> → <observed_to>, <sessions> sessions)_ > <reads> reads · <scans> searches · <skill_uses> skill uses · <touched_current_files>/<evaluable_files> current files touched > **Health:** <health.grade> (<health.score>/100) — append "(provisional)" unless maturity is `mature` > > **Current heat:** exclude `state != "current"`, then sort `files` by `heat` descending and show the top 5 as > `path (h<heat>, <reads>× lifetime)`, comma-separated. > **Untouched:** <count of untouched> — followed by the maturity suffix: > - `cold-start`: "(measurement just started — nothing can be called dead yet)" > - `warming`: "(early signal — more sessions needed before judging)" > - `mature`: "(dead-path candidates — see /tt insights)"

`$1` = "watch"

1. Silently run `TT_CLIENT=claude "${CLAUDE_PLUGIN_ROOT}/scripts/tt-open.sh" $2` (`$2` empty, `demo` or `replay`). The explicit client marker is required so the detached dashboard can load Claude-specific maintenance tips. 2. Answer with exactly the confirmation line the script prints (it reports tmux split / new window / used terminal). If the script fails, report the cause in one line (on first use macOS may ask for Automation permission; mention that if the error points to it).

`$1` = "insights"

1. Silently run `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/tt-stats.py" --client claude` and read the JSON. 2. If `maturity` is `cold-start`: answer in one line — `🌳 Not enough data yet (<reads> reads, <sessions> sessions) — check back after a few working sessions.` Stop. 3. Silently run `python3 "${CLAUDE_PLUGIN_ROOT}/scripts/tt-report.py" --client claude` — it writes `.trigger-tree/report.html` and prints the path. 4. Publish that file with the Artifact tool (favicon `🌳`, description "trigger-tree documentation telemetry report"). No Artifact tool available → use the local path as the link. 5. Show only the final report, with a hard maximum of 15 lines:

> **🌳 trigger-tree insights** _(period, #sessions, maturity)_ > > **Health** — grade + score with its three drivers, one line ("(provisional)" unless mature). > **Key figures** — reads, searches, skill uses, touched current files / evaluable files; > mention always-loaded files separately so the inventory equation reconciles. > **Agent personas** — when `agents.capture` is `on` and `agents.usage` is non-empty: > name the most and least used persona with counts. List `agents.never_invoked` as a > review prompt, never a removal recommendation, and say nothing about never-invoked when > `agents.never_invoked_status` is `awaiting-capture`. When `agents.capture` is `off` and > `agents.defined` is above zero, say instead that N personas are defined but usage is not > being recorded, and that `/tt setup` enables it; do not imply they are unused. > **Folder heat/cold map** — from `folders`: name the hottest folder by current > decayed `heat` (also state 30-day and lifetime reads) and the least-covered folder, > one line each. Cold means inactive now, not obsolete. > **Un

Read more
Ships withtrigger-tree

Gate documentation discovery in CI. Measure whether your project instructions change what agents do. Two concrete offers: CI gate — immediate. A deterministic, telemetry-free structural check fails a PR with the affected file and a suggested fix.

Get the whole plugin
Stats
14
Stars
1
Forks
Active
Maintenance
Python
Language
MIT
License
15h ago
Last commit
1mo ago
Created

Repo: Hedde/trigger_tree