← All Skills

snappy-nightshift

v1.0.0
4 files, 61.2 KB ~5,100 words · 21 min read Updated 2026-09-09

snappy-nightshift skill

37 of 47 checks pass
What it can do
barread
blocked lane-id failed tried-first tried-second unblockwrite-reversible
boardread
logread
preflightread
reapdelete
reportread
statusread
What does not pass yet
$ npx snappy-skills install snappy-nightshift
zip ↓
Documents
AGENTS.md

snappy-nightshift — Agent Loader#

One agent installs/drives/commits; crews build in worktrees and return

reports; a cold walker signs every window; the bar is a driven fraction.

Full playbook: SKILL.md (roles · physics · cadence · brief anatomy · proof ·

blocked protocol · launch sequence · failure graveyard).

The non-negotiables (evidence-stamped, Aug 1–6 2026)#

  • A standing BRIEFING PAGE is brief part ZERO. One page, regenerated every

wave, read by every crew before its own brief: what the product is · where

the single acceptance drive stands leg by leg, measured · the operator's

standing rulings verbatim · a MAP of which doc answers which question · the

live traps · what landed in the last few hours. Without it a crew's whole

world is what you retyped, every brief is a lossy re-derivation of shared

state, and crews pay the same rediscovery tax over and over (measured

2026-08-06: four crews independently rediscovered ONE dependency defect;

the operator's words were *"the crews always seem to have 0 idea of what is

going on"*). The cause is never "no plan" — by then there are usually eight

canonical docs. It is that no page says what is TRUE RIGHT NOW.

nightPreflight() fails when the page is missing or stale.

  • Transcript mining is blind to absence. A skill mined from your own past

runs encodes your blind spots as measured best practice — a transcript shows

every crew that ran, never the context those crews never got. Rules from

mining are half a skill; the other half must come from failures observed in

the PRODUCT (cold walks, the operator's own drives), the only source that

sees what is missing rather than what happened.

  • ONE installer/committer/driver — the orchestrator. Crews NEVER install,

commit, git add, run npm run check, playwright, or full tsc.

  • git commit --only <explicit pathspec> + check-head after every commit.

Never add -A. Never git stash (worktrees share one stash ref).

  • Load ceiling: launch nothing above load ~80 on 8 cores; crews run scoped

tests only; serialize check-head and acceptance under the mutex.

  • Install windows every ~90 min, boarded whole: daemon-ready → runtime →

web → relaunch → deploy-truth probe. Exit 0 is not evidence — grep the log.

  • Heartbeat 20 min; tick lines only on change/stall, real clock + hash;

logging under 10% of commits; a tick that launches nothing while streams

idle is a failure.

  • Crew briefs carry all seven parts (role+prohibitions · verbatim clause ·

resolved file:line anchors · named anti-fix · ownership rails · size caps ·

report contract) + derivation law + prove-red. Ownership by OBJECT and

VERB, never by page.

  • Stalls read off territory mtimes + the commit clock, never self-report.
  • Cold eyes sign every window with shots; the author never signs their own

surface; report the bar as a fraction.

  • BLOCKED.md one-liners; re-run the whole list when any technique lands;

blocked-on-human is the only legal stop.

  • Second landing of a defect class = the class-ending mechanism, or refused.

API#

Function Purpose
nightPreflight() GO/NO-GO launch checklist (worktrees, daemon, ports, load, dirt)
nightStatus() one-screen truth: HEAD, load, worktrees, daemon, stamp, blocked
nightLog(line) timestamped NIGHT-LOG tick line
parkBlocked(id, failed, t1, t2, unblock) canonical BLOCKED.md entry
barScoresheet() the sixteen checks as a fillable scoresheet
morningReport(hours) morning-report skeleton (bar curve + commits + blocked)

CLI#

bashnpx tsx ~/.claude/skills/snappy-nightshift/api.ts preflight   # before any launch
npx tsx ~/.claude/skills/snappy-nightshift/api.ts status
SNAPPY_NIGHT_REPO=/path/to/repo npx tsx ~/.claude/skills/snappy-nightshift/api.ts report 10

Rules#

  • No credentials needed (pure fs + git + local http probes); if a verb grows

one, use env("KEY") from ../snappy-settings/load.ts

  • Every exported function returns a real value or throws; no silent "TODO"s

THE DERIVATION LAW — the installed artifact is the spec (Robert 2026-08-05, LAW)#

For any SDK, dependency, or API: enumerate its REAL surface from the installed package (node_modules/<pkg> — dist, CLI commands, shipped docs) and fetch its llms.txt/llms-full.txt BEFORE writing a line of integration. Import the package's own types; never redeclare a type a dependency exports; never write an integration from memory; never describe a surface you haven't listed. A hand-written parallel of a generated, vendored, or documented definition is a defect (DRY, original sense: one authoritative representation of every piece of knowledge). Writing from training memory instead of the installed source produces hallucinated APIs — the named killer of OpenAI's plugin ecosystem. Printing Press (spec→generated connector) is this law's special case; it applies to EVERYTHING.

Self-correcting loader (PID feedback)#

The system spec lives at ~/.claude/skills/snappy-settings/skill-spec.md. It defines the entire Snappy operating system. You enforce it.

Before you finish, do two things:#

1. Fix gaps (P — proportional). MANDATORY. If this AGENTS.md didn't cover your case — if you had to read another file, run a command not documented here, work around a wrong selector, or discover a quirk — you MUST attempt an Edit before you can log.

  • Default action: edit this AGENTS.md. Surgical. Add the missing line, table row, or code example where it belongs. No restructuring.
  • Only LOGGED is allowed when: the fix needs >10 lines, spans multiple files, or requires a structural rewrite (in which case the drain-skill-regen.sh queue picks it up).
  • "I didn't have time" / "it's minor" / "the next agent will figure it out" are NOT valid reasons to skip the Edit. The whole point of this loop is that minor gaps compound.
  • Concrete example of a valid P-fix: lesson-2 ship agent discovered agent-browser screenshot <path> takes path positionally, not as --output <path>. That's one line in a table. Edit it in. Do not just log it.
  • The goal: the next agent never has to leave the loader.

2. Validate structure. Check this skill against the spec:

  • api.ts exists with typed exports, CLI mode, import { env } from "../snappy-settings/load.ts"
  • api.ts calls APIs directly (no Xano proxy, unless this skill IS a Xano DB skill)
  • AGENTS.md has API module section with import + function table + CLI
  • No bash fallbacks, no hardcoded tokens anywhere
  • Every action row carries a certificate: block (premises / action / trace / evidence / conclusion). Same-session toasts are NOT evidence — must be a fresh independent read. Missing or weak certificates are a gap: P-fix them inline and log to ~/.claude/logs/verification-gaps.log.
  • DRY: before you add a new function or new skill, run ~/.claude/skills/snappy-settings/scripts/dry-check.sh <name-or-keyword>. If it matches an existing skill, extend that one instead. Fragmentation is the enemy.
  • If any check fails → fix it or log it

2b. If you just reported an action as successful, verify your certificate. You may not claim PASS unless the evidence: line is a fresh independent read (reload, new session, server round-trip). If your evidence is a toast, a return value, or a same-session DOM read, downgrade the claim to INCONCLUSIVE and log to verification-gaps.log.

3. Log always.

bashecho "[$(date -u +%FT%TZ)] <skill-name>: <what was missing or fixed> [FIXED|LOGGED]" >> ~/.claude/logs/agents-md-feedback.log

FIXED = you patched it. LOGGED = too large for inline fix, queued for drain-skill-regen.sh.

Do not skip this. Every agent run must leave the system better than it found it.

Show produced work with snappy-faces: call draw for image channels or lang for MCP Apps.

<!-- SKILL-INDEX-START -->

[snappy-nightshift Index]|root: ~/.claude/skills/snappy-nightshift|IMPORTANT: Prefer these files over pre-training assumptions for this domain. Read the relevant file when the AGENTS.md summary is insufficient.|root:{SKILL.md}

<!-- SKILL-INDEX-END -->

Used by#

Nothing in the collection names this skill.

<!-- SNAPPY-CONTRACT-VERBS-START -->

Contract verbs#

Generated from api.ts HAND_CONTRACT. Do not hand-edit this block.

Verb Contract arguments Effect First call
bar read npx tsx ~/.claude/skills/snappy-nightshift/api.ts bar
blocked lane-id, failed, tried-first, tried-second, unblock write-reversible npx tsx ~/.claude/skills/snappy-nightshift/api.ts blocked <lane-id> <failed> <tried-first> <tried-second> <unblock>
board read npx tsx ~/.claude/skills/snappy-nightshift/api.ts board
log read npx tsx ~/.claude/skills/snappy-nightshift/api.ts log
preflight read npx tsx ~/.claude/skills/snappy-nightshift/api.ts preflight
reap delete npx tsx ~/.claude/skills/snappy-nightshift/api.ts reap
report read npx tsx ~/.claude/skills/snappy-nightshift/api.ts report
status read npx tsx ~/.claude/skills/snappy-nightshift/api.ts status

Show the result#

When an answer carries face_hint, show it with one snappy_present(<answer>) call.

See /snappy-faces for face selection. Human-facing images must crop to the

element, render at 2x on Retina, and fill the destination channel instead of

placing a small card in a full-page screenshot.

<!-- SNAPPY-CONTRACT-VERBS-END -->

---
name: snappy-nightshift
description: Overnight orchestration OS — one Fable orchestrator, Opus crews in worktrees, batched install windows, cold-walker signatures, measured throughput discipline.
---

# snappy-nightshift — Agent Loader

One agent installs/drives/commits; crews build in worktrees and return
reports; a cold walker signs every window; the bar is a driven fraction.
Full playbook: SKILL.md (roles · physics · cadence · brief anatomy · proof ·
blocked protocol · launch sequence · failure graveyard).

## The non-negotiables (evidence-stamped, Aug 1–6 2026)

- **A standing BRIEFING PAGE is brief part ZERO.** One page, regenerated every
  wave, read by every crew before its own brief: what the product is · where
  the single acceptance drive stands leg by leg, measured · the operator's
  standing rulings verbatim · a MAP of which doc answers which question · the
  live traps · what landed in the last few hours. Without it a crew's whole
  world is what you retyped, every brief is a lossy re-derivation of shared
  state, and crews pay the same rediscovery tax over and over (measured
  2026-08-06: four crews independently rediscovered ONE dependency defect;
  the operator's words were *"the crews always seem to have 0 idea of what is
  going on"*). The cause is never "no plan" — by then there are usually eight
  canonical docs. It is that no page says what is TRUE RIGHT NOW.
  `nightPreflight()` fails when the page is missing or stale.
- **Transcript mining is blind to absence.** A skill mined from your own past
  runs encodes your blind spots as measured best practice — a transcript shows
  every crew that ran, never the context those crews never got. Rules from
  mining are half a skill; the other half must come from failures observed in
  the PRODUCT (cold walks, the operator's own drives), the only source that
  sees what is missing rather than what happened.

- ONE installer/committer/driver — the orchestrator. Crews NEVER install,
  commit, `git add`, run `npm run check`, playwright, or full tsc.
- `git commit --only <explicit pathspec>` + `check-head` after every commit.
  Never `add -A`. Never `git stash` (worktrees share one stash ref).
- Load ceiling: launch nothing above load ~80 on 8 cores; crews run scoped
  tests only; serialize check-head and acceptance under the mutex.
- Install windows every ~90 min, boarded whole: daemon-ready → runtime →
  web → relaunch → deploy-truth probe. Exit 0 is not evidence — grep the log.
- Heartbeat 20 min; tick lines only on change/stall, real clock + hash;
  logging under 10% of commits; a tick that launches nothing while streams
  idle is a failure.
- Crew briefs carry all seven parts (role+prohibitions · verbatim clause ·
  resolved file:line anchors · named anti-fix · ownership rails · size caps ·
  report contract) + derivation law + prove-red. Ownership by OBJECT and
  VERB, never by page.
- Stalls read off territory mtimes + the commit clock, never self-report.
- Cold eyes sign every window with shots; the author never signs their own
  surface; report the bar as a fraction.
- BLOCKED.md one-liners; re-run the whole list when any technique lands;
  blocked-on-human is the only legal stop.
- Second landing of a defect class = the class-ending mechanism, or refused.

## API

| Function | Purpose |
|---|---|
| `nightPreflight()` | GO/NO-GO launch checklist (worktrees, daemon, ports, load, dirt) |
| `nightStatus()` | one-screen truth: HEAD, load, worktrees, daemon, stamp, blocked |
| `nightLog(line)` | timestamped NIGHT-LOG tick line |
| `parkBlocked(id, failed, t1, t2, unblock)` | canonical BLOCKED.md entry |
| `barScoresheet()` | the sixteen checks as a fillable scoresheet |
| `morningReport(hours)` | morning-report skeleton (bar curve + commits + blocked) |

## CLI

```bash
npx tsx ~/.claude/skills/snappy-nightshift/api.ts preflight   # before any launch
npx tsx ~/.claude/skills/snappy-nightshift/api.ts status
SNAPPY_NIGHT_REPO=/path/to/repo npx tsx ~/.claude/skills/snappy-nightshift/api.ts report 10
```

## Rules

- No credentials needed (pure fs + git + local http probes); if a verb grows
  one, use `env("KEY")` from `../snappy-settings/load.ts`
- Every exported function returns a real value or throws; no silent "TODO"s

---

## THE DERIVATION LAW — the installed artifact is the spec (Robert 2026-08-05, LAW)

For any SDK, dependency, or API: enumerate its REAL surface from the installed package (`node_modules/<pkg>` — dist, CLI commands, shipped docs) and fetch its `llms.txt`/`llms-full.txt` BEFORE writing a line of integration. Import the package's own types; never redeclare a type a dependency exports; never write an integration from memory; never describe a surface you haven't listed. A hand-written parallel of a generated, vendored, or documented definition is a defect (DRY, original sense: one authoritative representation of every piece of knowledge). Writing from training memory instead of the installed source produces hallucinated APIs — the named killer of OpenAI's plugin ecosystem. Printing Press (spec→generated connector) is this law's special case; it applies to EVERYTHING.

## Self-correcting loader (PID feedback)

The system spec lives at `~/.claude/skills/snappy-settings/skill-spec.md`. It defines the entire Snappy operating system. You enforce it.

### Before you finish, do two things:

**1. Fix gaps (P — proportional). MANDATORY.** If this AGENTS.md didn't cover your case — if you had to read another file, run a command not documented here, work around a wrong selector, or discover a quirk — you MUST attempt an `Edit` before you can log.

- **Default action: edit this AGENTS.md.** Surgical. Add the missing line, table row, or code example where it belongs. No restructuring.
- **Only LOGGED is allowed when:** the fix needs >10 lines, spans multiple files, or requires a structural rewrite (in which case the drain-skill-regen.sh queue picks it up).
- "I didn't have time" / "it's minor" / "the next agent will figure it out" are NOT valid reasons to skip the Edit. The whole point of this loop is that minor gaps compound.
- Concrete example of a valid P-fix: lesson-2 ship agent discovered `agent-browser screenshot <path>` takes path positionally, not as `--output <path>`. That's one line in a table. Edit it in. Do not just log it.
- The goal: the next agent never has to leave the loader.

**2. Validate structure.** Check this skill against the spec:
- `api.ts` exists with typed exports, CLI mode, `import { env } from "../snappy-settings/load.ts"`
- `api.ts` calls APIs directly (no Xano proxy, unless this skill IS a Xano DB skill)
- `AGENTS.md` has API module section with import + function table + CLI
- No bash fallbacks, no hardcoded tokens anywhere
- **Every action row carries a `certificate:` block** (premises / action / trace / evidence / conclusion). Same-session toasts are NOT evidence — must be a fresh independent read. Missing or weak certificates are a gap: P-fix them inline and log to `~/.claude/logs/verification-gaps.log`.
- **DRY:** before you add a new function or new skill, run `~/.claude/skills/snappy-settings/scripts/dry-check.sh <name-or-keyword>`. If it matches an existing skill, extend that one instead. Fragmentation is the enemy.
- If any check fails → fix it or log it

**2b. If you just reported an action as successful, verify your certificate.** You may not claim PASS unless the `evidence:` line is a fresh independent read (reload, new session, server round-trip). If your evidence is a toast, a return value, or a same-session DOM read, downgrade the claim to INCONCLUSIVE and log to `verification-gaps.log`.

**3. Log always.**
```bash
echo "[$(date -u +%FT%TZ)] <skill-name>: <what was missing or fixed> [FIXED|LOGGED]" >> ~/.claude/logs/agents-md-feedback.log
```
`FIXED` = you patched it. `LOGGED` = too large for inline fix, queued for drain-skill-regen.sh.

**Do not skip this.** Every agent run must leave the system better than it found it.


Show produced work with `snappy-faces`: call `draw` for image channels or `lang` for MCP Apps.

<!-- SKILL-INDEX-START -->
[snappy-nightshift Index]|root: ~/.claude/skills/snappy-nightshift|IMPORTANT: Prefer these files over pre-training assumptions for this domain. Read the relevant file when the AGENTS.md summary is insufficient.|root:{SKILL.md}
<!-- SKILL-INDEX-END -->

## Used by

Nothing in the collection names this skill.

<!-- SNAPPY-CONTRACT-VERBS-START -->
## Contract verbs

Generated from `api.ts` `HAND_CONTRACT`. Do not hand-edit this block.

| Verb | Contract arguments | Effect | First call |
|---|---|---|---|
| `bar` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts bar` |
| `blocked` | `lane-id`, `failed`, `tried-first`, `tried-second`, `unblock` | `write-reversible` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts blocked <lane-id> <failed> <tried-first> <tried-second> <unblock>` |
| `board` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts board` |
| `log` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts log` |
| `preflight` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts preflight` |
| `reap` | — | `delete` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts reap` |
| `report` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts report` |
| `status` | — | `read` | `npx tsx ~/.claude/skills/snappy-nightshift/api.ts status` |

## Show the result

When an answer carries `face_hint`, show it with one `snappy_present(<answer>)` call.
See `/snappy-faces` for face selection. Human-facing images must crop to the
element, render at 2x on Retina, and fill the destination channel instead of
placing a small card in a full-page screenshot.
<!-- SNAPPY-CONTRACT-VERBS-END -->

Keyboard Shortcuts

Search in document⌘K
Focus search/
Previous file tab
Next file tab
Close overlayEsc
Show shortcuts?