morninglisted
Install: claude install-skill jasonm4130/claude-skills
# Triage the night
The loop leaves its evidence in three places and remembers nothing else.
Read all three before saying anything. Announce: "Using nightshift:morning to
read last night's run."
## 1. Gather
```
cfg=loop/config; . $cfg 2>/dev/null
journal=~/.local/state/nightshift/$(basename "$PWD")/journal.md
```
- **Journal:** everything after the last `start:` line. Each `STOP:` line
names why the night ended; `task N:` lines carry cost and round outcomes.
- **Pull requests:** `gh pr list --label land --state open --json number,title,isDraft,labels,url`
and the same for `--label land:blocked`. A draft with the blocked label is
a task that failed its repair round; its body has the generator's report,
the skeptic's verdict and the verifier's tail. Merged PRs since the start
line: `gh pr list --label land --state merged --search "merged:>=<date>"`.
- **Run directory:** `~/.local/state/nightshift/<repo>/<date>-t<N>/` holds
`brief.md`, `gen-<round>.md`, `skeptic-<round>.md`, `check-<round>.log`
and the JSON envelopes. Read the log tail and the skeptic before judging.
- **The switch:** `gh variable get LANDING_STATE`. The loop flips nothing;
if it is not `run`, a human froze it or never armed it.
## 2. Report, one block per stop
Headline first, then the consequence, then the fix. No raw log pastes; quote
the one line that matters.
- **Landed.** "Task 3 landed as #41, 2 rounds, $5.10." Nothing to do; say it.
- **Blocked** (`land:blocked` draft). Say which of