Capitano — handles an agent suspected of being STUCK IN AN ACTIVE LOOP (alive and generating turns, but repeating the same cycle without producing anything: ACK ping-loop with a peer, same action/query going nowhere). Covers the crack between C-08 (dead/silent → Dottore) and C-12 (burning at cadence 0.00/min → kill).…
Doctor-only. UNBLOCK phase, runs BEFORE the refresh in every Doctor round. Detects the four block shapes that stop a whole team — pending text in a coordinator's pane, an agent retry-looping at a mute peer, every operative sitting at an empty prompt with quota to spend, a coordinator silent past the threshold — and…
DB + filesystem contract every Scrittore follows when taking a position from scored (≥50) to ready/excluded. Three gates BEFORE writing a single line of CV (anti-rewriting, anti-collision, link verification), one canonical path for deliverables, one final gate after the 3rd Critic round. Skipping any of these produces…
The Critic's full review protocol — receive PDF + JD, run a blind review (no profile access), produce a structured verdict with score 1-10 + 7 fixed sections + JD-vs-CV table + prioritized actions, save the file under $JHTUSERDIR/critiche/, notify the spawning Writer, stop. Owned by the Critic. The whole point of…
Drain pending bridge verdicts at the START of every Captain turn — MANDATORY first action before doing anything else. During a long turn, jht-tmux-send from the bridge can fail with rc=3 (text never appeared in the pane) and a [BRIDGE PACING] or PIPELINE STALLED verdict gets silently dropped. The bridge appends EVERY…
Read a 15-min [BRIDGE PACING] calibration tick — the bridge's measurement of the team's actual rate, with a verdict (SFORO / MARGINE / ALLINEATO) plus the per-agent share and cadence. The tick is addressed to the SENTINELLA, not to you: open this skill when she forwards you those numbers, or when you go and read a…
Reclaim disk on the shared JHT caches (uv wheel cache + codex SQLite log) every 24h. Owned by the Dottore — single-instance, runs at the end of a routine round when the team is idle. Never run mid-emergency: the SQLite VACUUM blocks for 30s on a 200 MB DB and would steal cycles from a Sentinel-driven recovery.…
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…
Reply to the user when they message you from the JHT web chat. The user reaches you with the prefix [@utente -> @capitano] [CHAT] ; reply ONLY with jht-send — never write to chat.jsonl by hand (shell quoting breaks the JSON line and the frontend silently drops the message, the user sees nothing while you think you…
Reply to the user when they talk to you from the JHT game/desktop chat. The message lands in your tmux pane as [@utente -> @ ] [CHAT] . Reply with ONE short jht-send — never write chat.jsonl by hand — and go straight back to the task you were on. You are a worker: a reply costs a turn of YOUR model, so answer from…
Strategy map for what to search WHERE, derived entirely from the candidate profile. The 5 concentric circles (workmode + relocation) tell you the geographic scope; the 4 source tiers (LinkedIn → ATS aggregators → niche → web) tell you which platforms to drain in order. A scout that searches the wrong tier in the wrong…
Run the mandatory 3-round CV review loop with the Critico — autonomously, without going through the Capitano. For each round you spawn a FRESH CRITICO-S session (same N as your Scrittore session: SCRITTORE-2 → CRITICO-S2), send PDF + JD, wait for the structured verdict, kill the Critic, correct the CV, regenerate the…
Healthcheck periodico (Dottore) per riconciliare CV su disk e cvpdfpath nel DB. Identifica orfani (file su disk senza riga DB) e ghost (riga DB con cvpdfpath che punta a file inesistente). Notifica il Capitano sui mismatch così l'utente non perde top PASS invisibili e non vede "CV da scrivere" per CV già scritti.
Write the CV markdown that will be PDF'd and reviewed by the Critico. First read the user's ORIGINAL CV in $JHTHOME/profile/sources/ to mirror their voice and match the register to the industry (the tech defaults — "Technical Skills: Python", metric+tech-in-parens — are wrong for hospitality/sales/care/creative). Six…
Pre-emptive mass-restart of every team agent once per 24h for context freshness. Owned by the Dottore. Runs only inside a narrow daily window (default 03:00 UTC ± 30 min) and only if no wave has fired in the last 23h. Each agent is killed + respawned via the same atomic sequence of liveness-check Step 3, ordered tier…
Insert NEW records into the JHT DB (positions / scores / applications / companies / positionhighlights). Use it ONLY when an agent needs to create a record — Scout for positions, Analyst for companies and highlights, Scorer for scores, Writer for applications. Never blind-overwrite — for updates use db-update.
Query the JHT SQLite DB (positions, applications, stats). Use it whenever you need position status, per-agent queues, scores, match rate, or record counts. DB path from $JHTDB, fallback /jhthome/jobs.db.
Update existing records in the JHT DB (positions / applications). Use it to promote positions to checked/excluded, write Critic score/verdict, mark applications as sent, update salary, last-checked, etc. Always after a db-query that confirms the current record state.
Day-start sourcing from the team's DEDICATED mailbox (the user forwards their own job alerts to it). Highest-accuracy source: the alert is already pre-filtered on the user's intent. IMAP poll of ANY platform (LinkedIn/Glassdoor/Indeed + national/city/niche boards), creates positions with the source tag, idempotent by…
Extract deadlines from job descriptions and report factual deadline information only after an explicit user request. Never notify or prompt the user automatically.
Read user feedback (like/dislike/hide/star) from the cloud — one position at a time, or aggregated over a window. Used by the Scorer as contextual preference evidence for future positions while excluding the current position, by the Mentor to count recurring reasons (Pattern F), and by the Scout as a contextual…
The first half-hour a brand-new user ever watches the team work. Open this skill when you receive [PROFILO-PRONTO] from the Assistente, or at wake when firstrun.py status reports phase awaitingprofile / burst. It overrides the gradual calibration (C-02) for the first window only, and it defines success as SCORED…
Convert UTC timestamps to the user's timezone before showing them in chat, charts, Telegram, or any user-facing output. Use this helper whenever you would otherwise write a raw strftime("%H:%M") of a UTC datetime in something the user reads.