agentleFS
Arthurmf01Arthurmf01/claude-skills/overnight-explorer/SKILL.md

overnight-explorer

Skill0 starsChanged 36 days agoMITView on GitHub

Explores many different directions on one open problem while the owner sleeps and leaves a short filtered report for the morning. A strong model generates the directions, cheaper scout sub-agents research each one with sources, separate critic sub-agents try to kill each one, and the strong model ranks the survivors and checks their sources. Runs headless from a nightly launchd job over a queue of brief files; can also run one brief now. Use when the user says "/overnight-explorer", "explore this overnight", "queue this for tonight", or asks for many directions on one problem. Never sends anything except one notification, never commits, never acts on its findings.

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 4 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈4

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Do not change the brief, the queue or anything outside run.

    line 21
  2. Very specific:

    Run now: bash ~/.claude/skills/overnight-explorer/run.sh --now "<brief path>" (in the background.

    line 27
  3. Distinctive:

    Read the brief in full. Read every file and URL under Context (a relative path is relative to the brief's own folder).

    line 35
  4. Distinctive:

    Write N directions. Each is a short title and one paragraph: what the direction is, the mechanism by which it would answer the problem, and …

    line 36
  5. Very specific:

    When a memo comes back, write it straight away to memos/<NN> <title>.md under a ## Memo heading.

    line 49
  6. Very specific:

    If the brief's header has a simulate_failure field (a test hook: a comma-separated list of direction numbers), do not launch scouts for …

    line 51
  7. Very specific:

    Write Report.md and summary.json (formats below).

    line 70
  8. Very specific:

    If any direction failed, put Incomplete.

    line 110
  9. Distinctive:

    Every direction appears exactly once: either under Top picks or under Killed (failed directions are listed only in the Incomplete line).

    line 112
  10. Very specific:

    Every claim about the outside world in the report carries a source URL from a memo, a (memo NN) reference to the memo that sources it, or …

    line 124
  11. Distinctive:

    Do not soften the critics.

    line 127

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Overnight Explorer

Breadth is cheap overnight; the reader's attention in the morning is not. Your job is to spend that attention on the few directions (at most five, sometimes none) that survive real scrutiny, and to show why the rest died.

How you were called

Headless (the normal case). run.sh has already chosen the brief, set its status, created the report folder and started you inside it. Your prompt carries:

  • brief=<path>: the brief to explore.
  • run=<folder>: your working folder. You can write only here. Everything goes here.
  • directions=<N>: how many directions to run.
  • clamped=<M>: present only when the brief asked for M and was capped at N. Say so in Run stats.
  • worker_model=<model>: the model for every scout and critic.
  • started=<time>: when the run started, for Run stats.

Do not change the brief, the queue or anything outside run. run.sh handles status and the notification after you finish.

Paths. Every file you write starts with the run path, copied character for character from your prompt (it is in quotes there; do not retype it from memory). Before anything else, write <run>/directions.md with the line Started. If that write is refused, the path is wrong: compare it with the prompt, character by character, and retry with the exact path. A refused write means a wrong path, never a reason to put the report in your reply instead.

By hand (/overnight-explorer <brief path> in a normal session, no run= argument). Do not run the stages yourself in that session. Start the runner so the result is identical to a scheduled run:

  • Run now: bash ~/.claude/skills/overnight-explorer/run.sh --now "<brief path>" (in the background; it can take hours).
  • Small rehearsal: add --dry-run --directions 3. Writes to the scratch folder, leaves the brief alone, sends nothing.
  • Queue for tonight: check the brief has status: queued and sits in the queue folder named in ~/.claude/skills/overnight-explorer/config.md. Offer to draft the brief from brief.example.md if the user only has a sentence.

Tell the user which of these you did and where the report will appear.

Stage 1: Diverge (you)

  1. Read the brief in full. Read every file and URL under Context (a relative path is relative to the brief's own folder). A path you cannot read goes into Open questions; do not guess its content.
  2. Write N directions. Each is a short title and one paragraph: what the direction is, the mechanism by which it would answer the problem, and who or what it depends on. Respect Out of scope.
  3. Make them genuinely different. Spread across different mechanisms, buyers or users, time horizons, and degrees of ambition. At least a few should be directions the brief's author would not have thought of; at least one should challenge the framing of the problem itself.
  4. Deduplication pass. For every pair, ask: do these share the same core mechanism, so that one scout's research would answer both? If so, merge them into one direction that stays in the run, and write a replacement that is new. Never drop a candidate because it looks weak: killing weak directions is the critics' job, with evidence. Ideas the brief or its context already floated are candidates like any other. Repeat until you have N distinct directions. Record each merge (the two titles and the merged title) for Run stats.
  5. Number them 01 to N and overwrite <run>/directions.md with the list and the merges.

Stage 2: Explore (scouts)

Launch one overnight-explorer-scout sub-agent per direction with the Agent tool, model set to worker_model. Send up to five Agent calls in one message, then the next five, and so on. Give each scout:

  • the direction (number, title, paragraph),
  • the brief's Problem, What good looks like and Out of scope sections, verbatim,
  • the context file paths as absolute paths, and the context URLs, so it can read them itself.

When a memo comes back, write it straight away to memos/<NN> <title>.md under a ## Memo heading. Saving each memo as it arrives matters: if the session dies, the memos already saved are what the morning report is built from.

If the brief's header has a simulate_failure field (a test hook: a comma-separated list of direction numbers), do not launch scouts for those numbers. Treat them as failed.

A scout that errors, returns nothing, returns a memo without the required sections, or cites a URL that is not in its own Pages opened list, or makes a claim about the outside world (in any section, Biggest risk included) with neither a URL nor (inference is retried once, with the problem named. Check this yourself before saving: do not trust the scout's own check. If it fails again, the direction is marked failed: it is not critiqued, and it goes into the Incomplete list.

Stage 3: Critique (critics)

For every saved memo, launch one overnight-explorer-critic sub-agent, model set to worker_model, in batches of up to five. Never ask a scout to critique, and never critique a memo yourself at this stage. Give each critic:

  • the persona from the brief's critic field (default: "a sceptical expert who has seen this idea fail before"),
  • the brief's What good looks like, verbatim,
  • the absolute path of the memo file. The critic reads only that file.

Before appending, check the Strongest objection is at most two sentences. If it is longer, send it back to the same critic once asking for two sentences; if it is still longer, keep its first two sentences and note the cut in Run stats. Append each critique to its memo file under a ## Critique heading.

Stage 4: Synthesise (you)

  1. Rank the directions by critic score, then by your own judgement of the critique and the memo. Your judgement may move a direction, but say why in the report when you overrule a score by more than two points.
  2. Choose up to five top picks from the directions that scored 6 or more, best first. Fewer than three is fine when fewer than three reached 6, and zero is a valid outcome: say so plainly in The answer rather than promote a weak direction.
  3. Source check. For every top pick, open each URL its memo cites for a claim the pick depends on (WebFetch). For each: does the page say what the memo says it says? Record every claim that fails (page does not support it, page unreachable, or URL invented). A pick that loses a load-bearing claim is re-scored and may drop out of the top picks; record that too. Your own knowledge does not rescue a claim the page does not support. Also check, whatever the number of top picks: every claim The answer, Killed and Patterns lines depend on (open the URL; a claim you did not check is written as "(memo NN, not checked)"), every quotation that reaches the report, and any factual claim the brief itself rests on.
  4. Write Report.md and summary.json (formats below). Write them last, after the source check.

Report.md

Exactly these seven sections, in this order:

# <brief title>

## The answer
<three lines: the strongest direction, the main reason, what to test first>

## Top picks
### 1. <title> (<score>/10)
- **Thesis:** ...
- **Why it survived:** ...
- **Strongest objection:** <the critic's, quoted> **Answer:** <how it could be answered, or "none yet">
- **Sources:** <URLs>
- **Next step:** <one concrete action, doable within a week>

## Killed
- **<NN> <title>** (<score>/10): <the reason it died, one line>

## Patterns
<what kept coming up across directions, each with the direction numbers that show it>

## Open questions
<questions, each ending in a question mark, that no source could answer. Not files that were read fine, and not directions the run chose not to explore>

## Source check
<every claim checked (top picks, The answer, Killed, Patterns, quotations, the brief's own facts): OK, or FAILED with the reason>

## Run stats
- Directions requested / run: ...
- Merged in deduplication: ...
- Scouts launched, critics launched, failures (direction numbers): ...
- Models: orchestrator <yours>, scouts and critics <worker_model> (any other model in the usage lines below is the web tools' own backend)
- Started: <the `started` value from your prompt> (the runner adds usage and the close-out time below this line)

If any direction failed, put **Incomplete.** Directions not finished: <numbers and titles>. as the first line under the title, before The answer.

Every direction appears exactly once: either under Top picks or under Killed (failed directions are listed only in the Incomplete line). Link each title to its memo file.

summary.json

{"title": "<brief title>", "directions_run": <number completed>, "incomplete": <true|false>,
 "missing": ["<NN> <title>", ...], "answer": ["<line 1>", "<line 2>", "<line 3>"],
 "picks": [{"title": "<title>", "score": <number>}, ...]}

Rules

  • Every claim about the outside world in the report carries a source URL from a memo, a (memo NN) reference to the memo that sources it, or an (inference) label. That includes the Killed and Patterns lines.
  • Quotation marks only around words copied character for character from a source.
  • Nothing is sent, posted, committed or written outside the run folder.
  • Do not soften the critics. A direction the critic killed with a good reason stays killed even if you like it.
  • Plain, direct British English. No em-dashes.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.