eventslisted
Install: claude install-skill zedarvates/botte-secrete
# events — the unified decision log
One append-only file per project, one JSON line per decision. Nothing else in
the pipeline needs to change what it does — it just also calls `log_event`.
```bash
python -m skills.events.cli tail . # last 20 events
python -m skills.events.cli tail . -n 50 --json
python -m skills.events.cli log route . --field out=local --field tokens_saved=210
python -m skills.events.cli clear .
```
```python
from skills.events import log_event, read_events, tail_events, follow_events
log_event("route", project_root=".", filter=1, out="local", tokens_saved=210)
tail_events(".", n=20)
for rec in follow_events("."): # blocking generator, for --live tools
...
```
## Event kinds
| kind | typical fields | emitted by |
|------|-----------------|------------|
| `route` | filter, out (local/cloud), tokens_saved, reason | `auto_router.AutoRouter.decide` |
| `cache` | hit (bool), key, tokens_saved | `cache.ProjectCache` |
| `escalate` | from, to, reason | `auto_router.AutoRouter.run` |
| `nn_out` | model, probs/class | `botte_nn` predictors |
| `fusion` | strategy, models | `auto_router.fusion` |
| `qa_outcome` | source, route, status, verification_state, evidence_count | execution adapters via `trajectory.outcome` |
| `qa_trajectory` | route, verdict, quality_score, verified_by | `trajectory.quality` |
| `qa_shadow_advice` | status, recommendation, evidence_strength, acted=false | `trajectory.quality` |
`kind` is free-form — any skill can log i