You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: Daily handoff diary for the Captain. The Captain is restarted often (context-refresh, new work window, reboot) and otherwise loses the day's hard-won pacing lessons — repeating the same mistakes (e.g. 3 Scouts at once → an unbrakable spike → a 5h coast to repay the debt). Read the PREVIOUS day's notes at startup (handoff), and APPEND a one-line note whenever something significant happens during the day (a scaling decision, a spike, a kill, a lesson). One append-only file per day.
Copy file name to clipboardExpand all lines: agents/_skills/rate-budget/SKILL.md
+39-27Lines changed: 39 additions & 27 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,47 +8,59 @@ allowed-tools: Bash(python3 *)
8
8
9
9
The monitoring bridge (`.launcher/sentinel-bridge.py`) polls the active provider every 1–10 min (dynamic — more often under pressure) and writes each sample to `/jht_home/logs/sentinel-data.jsonl`. This skill reads only the **latest sample** that's already been written — no extra provider call.
10
10
11
-
## At Captain startup
11
+
## Primary: the SAME tick the Sentinella gets
12
12
13
-
Before spawning any agent, run:
13
+
Run with no argument (or `tick`):
14
14
15
15
```bash
16
-
python3 /app/shared/skills/rate_budget.py plan
16
+
python3 /app/shared/skills/rate_budget.py tick
17
17
```
18
18
19
-
Typical output:
19
+
You get the **exact same message** the bridge sends to the Sentinella — the
20
+
bridge renders it every tick into `logs/last-tick.txt` and this reads it back
21
+
(zero provider calls, zero divergence). Three airy sections + a bridge hint:
22
+
20
23
```
21
-
=== Rate Budget — claude ===
22
-
Usage: 53%
23
-
Reset: 13:49 (in 2h 34m)
24
-
Measured velocity:+0.39%/h (EMA)
25
-
Target velocity: 11.38%/h (to close at 92% by reset)
26
-
Reset projection: 56%
27
-
Status: OK
28
-
Throttle: T0 full speed
29
-
Host: cpu=4.7% ram=9.8% (OK)
30
-
31
-
Recommended policy: Spawn freely in parallel — keep normal pace.
-`Throttle T2+` or `Measured velocity` sopra `Target velocity` (burning) → **no spawn**, wait for the bridge to clear the throttle
40
-
-`Reset projection` è solo INFO (estrapolazione volatile a fine finestra) — non basare lo spawn su quello.
45
+
**Read it like this — la velocità è IL segnale** (proj è solo INFO volatile):
46
+
- ogni sezione ha **velocità attuale** (usage consumato / tempo trascorso) vs **target** (quanto manca / tempo che resta), stessa unità %/h. Lo scarto `[+X%/-X%]` è il giudizio.
47
+
-**5h** = il soffitto del provider (lock a 100% prima del reset). **Oggi** = il budget del giorno. **Settimana** = budget + debito.
48
+
- velocità **sotto** target su tutte → c'è margine → spawn graduale (C-02). Velocità **sopra** target → frena / non spawnare. Segui il `🧭 CONSIGLIO`, ma **decidi tu** (C-01).
41
49
42
-
**If output is `NO_DATA`:** the bridge hasn't polled yet. Wait 1–2 min and retry. Do not start the team without this signal — you risk saturating the rate-limit blind.
50
+
**If output is `NO_DATA`:** the bridge hasn't written a tick yet (not started, or off-hours). Wait 1–2 min and retry.
43
51
44
-
## One-liner version (scriptable)
52
+
## Other modes
45
53
46
54
```bash
47
-
python3 /app/shared/skills/rate_budget.py status
48
-
# → provider=claude usage=55% status=OK throttle=T0 reset=13:49 (in 2h 34m)
55
+
python3 /app/shared/skills/rate_budget.py plan # scheda dettagliata (velocity EMA, host, policy)
56
+
python3 /app/shared/skills/rate_budget.py status # one-liner scriptable
57
+
python3 /app/shared/skills/rate_budget.py live # FORZA un fetch fresco al provider (costa) — solo per dubbi gravi
0 commit comments