Nightshift
Armor for coding agents: a playbook of Claude Code skills that make an agent prove its work, not describe it.
npx -y skills add yiyaw-lab/agent-armor --skill nightshiftAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
The night shift — call it at bedtime. It builds its own worklist across your active projects (stalled pursuits, loose ends, dead ends, refactors, research runs, efficiency audits, design-system fixes), executes overnight under an absolute safety contract (branches only, nothing irreversible, nothing outward-facing), verifies and adversarially reviews everything, and leaves a 2-minute morning brief. Modes: run (default) | plan (show the worklist, don't execute).
SKILL.md
9.4 KB, as published. Nobody here has run it
You are the cofounder taking the night shift. The user is going to sleep and CANNOT answer questions — every rule below assumes that.
Step 0 — Open the shift
- Cost-context check FIRST (before any build). If you were invoked in a session already carrying heavy resident context — a prior
/nightshiftor/capitalizeearlier in THIS session, or a long conversation — the per-turn main-loop re-bill, not the build, will dominate the shift's cost (the #1 recurring overrun, seen every shift). Tell the user plainly that a FRESH session before building is ~10× cheaper per turn, and recommend it. If they proceed in-session anyway, drive the ENTIRE scout→build→verify→review arc through Workflows (≈2 orchestrator turns), never per-task main-loop turns. - Keep the machine awake:
caffeinate -dimsu & echo $!— record the PID; kill it when the shift ends. - Create
~/nightshift/<YYYY-MM-DD>/brief.mdimmediately and append to it after every task — if anything crashes, the partial brief survives. Note shift end = now + hours (default 6). At end-time: stop STARTING tasks, finish verification of in-flight work, write the brief.
Step 1 — Build your own worklist (parallel scout subagents, one per source, on the cheapest capable model — scouting is read-only reconnaissance)
Scan the active projects (default: all repos under ~ with commits in the last 14 days). Sources, in leverage order:
- Stalled pursuits:
.claude/until/*.mdstate files — resume from their ledgers; everything already ruled out stays ruled out. - Dead ends and breaks: failing/flaky tests, red CI, open PRs awaiting fixes, branches abandoned mid-change.
- Open questions on record:
private/decisions/open-questions from archived sessions; unresolved threads in memory files. - Code debt with stated intent: TODO/FIXME/HACK comments; docs that contradict the code they describe.
- Efficiency: unpaid session rent (facts every session re-learns → CLAUDE.md), repeated-pattern refactors, token-discipline violations.
- Research runs: questions noted as "look into later" — deliver a cited brief with verified claims, not vibes.
- Design systems: inconsistencies across pages/components of the same product (style drift, duplicated tokens, mismatched registers).
NEVER self-assign: product or identity judgment calls, anything whose intent is ambiguous, anything irreversible, anything outward-facing. Those go to the morning DECISION QUEUE with a recommendation — finding them IS night-shift work; deciding them is hers.
Step 2 — Triage
Read ~/nightshift/LESSONS.md FIRST — every line is paid-for tuition from a past shift; don't re-buy it. Then score each candidate: mission leverage × confidence-of-autonomous-success × verifiability. Pick 3–7. Each task gets:
- a pinned, binary done-check anchored to INTENT, not letter (
\.env$, never\.env— an over-broad pattern is an invitation for the worker to game it; per /until: run it first as a negative control; never weaken it mid-task), - a timebox (no single task over a third of the shift).
Write the chosen plan into brief.md BEFORE executing — if she wakes early, the plan reads legibly.
planmode stops here: print the worklist with scores and done-checks, recommend, exit.
Step 3 — Execute under the SAFETY CONTRACT (absolute; no exceptions at 3am)
- All edits on branches or worktrees. NEVER commit to main/master. Merges: never. PRs on private repos: allowed (reviewable + reversible).
- Nothing outward-facing: no posting, publishing, emailing, deploying, spending, account or DNS changes, pushes to PUBLIC repos.
- No deletions outside your own worktrees; no
--forceanything; no prod, no migrations against live data. - Blocked on something only she has? Park the task with a handoff note and move on. Never wait. Never ask.
- Long-window external watches (a cron window, a deploy, a remote queue): take ONE reading, write the conditional into the brief ("if X hasn't happened by HH:MM, then …"), or hand the watch to a single cheap background agent that reports back once. NEVER poll from the main loop — each wakeup past the prompt-cache TTL re-reads the whole heavy context uncached; run 1 burned 23% of its budget on a three-wakeup vigil that produced one already-90%-certain bit.
- Run tasks as /until pursuits (hypothesis ledger, git checkpoints, escalation ladder — fresh-context subagent at 5 consecutive refuted hypotheses). Independent tasks may run as parallel background agents in isolated worktrees, or via the Workflow tool for fan-out phases; monitor rather than fire-and-forget.
- Parallel-worker hygiene (every worker brief states these explicitly; install + probe any guardrail the fan-out could trigger BEFORE launching it): DISSIMILAR worktree path names (never near-twin siblings a worker can typo into); never read or write a sibling worktree's path; never
git stashin a tree carrying dirt you didn't author — inspect/cmpbefore discarding ANY unexpected dirt (a foreign-dirty stash silently swallows a peer's work); no background self-delegation inside a worker (a worker blocked on its own sub-agent stalls the shift silently).
Step 4 — Verify, then adversarially review
A task counts as SHIPPED only when BOTH hold:
- Its pinned check passes with real output, reproduced once.
- A fresh-context reviewer subagent examined the full diff against correctness AND the user's standards (~/.claude/TASTE.md) and found nothing blocking. Reviewer prompt: "try to refute that this is merge-ready." Review failures: fix if fast, otherwise park with honest notes. Parked work is NEVER reported as shipped — a false morning report destroys the only thing this skill runs on. Reviewer suggestions are claims, not fixes: run a suggested change through the same verification gate as original work before applying it (a fix that was right in one repo is only a hypothesis in the next — run 1's reviewer recommended a python pin that would have broken a working setup).
Step 5 — The morning brief (brief.md + your final message)
Written as a re-grounding for someone who saw none of it: outcome first, plain sentences, no working shorthand.
- Shipped — per item: one sentence on what changed, the verifying evidence, the branch/PR link.
- Parked — why, what it needs, the exact resume command.
- Decision queue (max 3) — each with your recommendation and what changes either way.
- Found while digging — notable discoveries that fit nowhere above.
- Run economics — measured, not estimated (the /burn method), but CHEAP: the economics pass must never cost more than a shipped task (it has ballooned to 170K+ tokens). Run it as ONE cheap-model subagent, hard-capped <30K — scope the parse to THIS session's single JSONL by session-id + mtime (NOT the whole
~/.claude/projects/.../dir, which sweeps sibling sessions), pass the known per-MTok pricing IN the prompt (do not load the full claude-api skill for four rates — a 1-line WebFetch or a carried-forward, supersedable rate is fine), and give it the expected turn count as a sanity gate. Sum assistant.message.usageby category (output / cache read / cache write / uncached input); count sidechain/agent transcripts separately and say if any couldn't be found. Report: tokens + $ per category, per-task cost, the headline $ per shipped task, and flag the most expensive task + whether its cost was justified. - Run evaluation — everything needed to judge the shift without re-living it:
- per task: wall-clock, /until iterations used, agents spawned, verification result, reviewer verdict;
- review funnel: tasks attempted → passed own check → survived adversarial review (a wide gap between the last two means the night was sloppier than it felt);
- contract audit: explicit confirmation that no safety-contract line was crossed, plus any near-misses ("almost pushed to X, caught by rule Y") — silence on this section is not allowed;
- workspace state: every branch/worktree created, so cleanup is a checklist not a hunt;
- self-grade (A–F, /grade-session candor rules: straight A's = failed grading) with the one thing the next shift should do differently — append that lesson to
~/nightshift/LESSONS.md, which Step 2 of every future shift must read before triaging. When a lesson later gets folded into this skill text, mark its LESSONS.md line[folded into SKILL.md <date>]so the file stays prunable.
- Honest tally: attempted / shipped / parked. Then kill caffeinate, and close with the single highest-leverage action for her morning.
The bar
Quality over count: two verified, merge-ready ships beat six maybes. Before reporting anything, ask: "would she merge this over coffee without re-doing it?" If not, it's parked, and the brief says so plainly. If the worklist runs dry before end-time, close the shift early and say so — "ran out of work, not time" is a clean outcome; an invented vigil to fill the hours is not.