The super-loop that closes the research→backlog loop — it chains the outward CRAWLERS (the daily `idea-scout` arXiv/GitHub feed, the industry scans, the RESEARCH/CONCEPT corpus) into the STUDY pipeline (`/study-repo` → `/field-borrow`) and runs the whole thing on a cadence. The crawler surfaces repo-shaped leads into a needs-triage queue and stops; turning any one into scoped, witnessed, license-clean backlog is still a manual pass someone has to remember to run. This skill is that seam, auto...
Scanned 9/2/2026
Install to Claude Code
npx -y skills add anthony-chaudhary/fak --skill scout-loop --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Scout Loop?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anthony-chaudhary-scout-loop-fak)More formats (shields.io, HTML) on the badges page.
---
name: scout-loop
description: The super-loop that closes the research→backlog loop — it chains the outward CRAWLERS (the daily `idea-scout` arXiv/GitHub feed, the industry scans, the RESEARCH/CONCEPT corpus) into the STUDY pipeline (`/study-repo` → `/field-borrow`) and runs the whole thing on a cadence. The crawler surfaces repo-shaped leads into a needs-triage queue and stops; turning any one into scoped, witnessed, license-clean backlog is still a manual pass someone has to remember to run. This skill is that seam, automated: once per pass it CRAWLS. Use when this named workflow matches the task.
allowed-tools: Read, Bash, Write
metadata:
opencode: claude-only # the commit-by-explicit-path, honesty-boundary, no-monolith, and scratch-only-clone discipline are load-bearing and not portable per-skill
---
# /scout-loop — crawl the field, study the best lead, file witnessed backlog
> **The research→backlog super-loop.** fak already has an outward crawler
> (`fak idea-scout` plans deduped `idea-scout` triage issues from arXiv, GitHub,
> Hacker News, and Reddit; `--live` is the separate mutation gate) and a study pipeline (`/study-repo` reads a repo at a pinned `@sha` and
> decomposes it; `/field-borrow` witnesses one capability against fak and files it
> grounded). Nothing connects them: leads pile up in a triage queue and the deep
> study→witness→file pass waits for a human to remember it. `scout-loop` is that
> seam — it drives the tools we already have, in order, one lead per pass, and can
> run unattended on a cadence.
This is a **meta-skill**: it re-implements none of the crawlers or study skills.
It orders them and holds the discipline the raw pieces assume — **PLAN/witness
first, one lead per pass, no monolith, and a crawl is never a ship.**
## Its place in the family (do not duplicate a sibling)
| Skill / tool | Starts from | Mechanism | Terminal action |
|---|---|---|---|
| `fak idea-scout` | an outward **feed** | dry-run arXiv/GitHub/HN/Reddit scan + filed-stamp dedup | plans raw triage issues; `--live` files |
| [`/study-repo`](../study-repo/SKILL.md) | one **repo URL** | clone → read the code → decompose | files many small witnessed leaves |
| [`/field-borrow`](../field-borrow/SKILL.md) | one **named capability** | dogfood `fak_feature_query`/`fak index` | files one grounded issue |
| [`/industry-score`](../industry-score/SKILL.md) | the **field taxonomy** | coverage + parity-debt scorecard | a scorecard (files nothing) |
| [`/super-loop`](../super-loop/SKILL.md) | the **ready backlog** | launch N detached `/goal` workers | resolves leaves (witnessed ancestry) |
| **`/scout-loop`** (this) | **the crawler output** | **crawl → select → study → witness → file**, cadenced | **runs the study pass unattended, one lead per pass** |
`scout-loop` is to `idea-scout`+`study-repo` what `/super-loop` is to a single
`/dos-dispatch`: the durable, cadenced front door that runs the proven unit
repeatedly and safely. If you were handed **one specific repo**, skip straight to
`/study-repo`. If you already have a **named capability** to check, use
`/field-borrow`. Reach for `scout-loop` when the job is *"keep finding new leads
and converting them"* — the loop, not a single pass.
## Durable monitored-source queue
Start each pass from [`docs/research/monitored-repositories.json`](../../../docs/research/monitored-repositories.json), rendered with:
```powershell
fak study-monitor --due-days 14
```
Prefer the highest-priority due `candidate` or `watch` row before opening a fresh outward search. Exact `owner/name` is the deduplication key. When outward discovery finds a stronger untracked lead, register its checked revision and `last_checked` before deep study; after study, update the same row and link its `study_note`. This makes “most recently checked” queryable rather than recoverable only from filenames or session memory.
## The pass — one lead, end to end
### 1 — CRAWL: capture the first-class scout plan
Run the Go front door from the repo root. Dry-run is the mandatory default:
```bash
fak idea-scout --json > idea-scout-plan.json
```
Inspect candidates, scores, source revisions, dedupe evidence, and planned issue contracts. For a
pinned replay or unavailable network, use `--candidates FILE`. Direct
`python tools/idea_scout.py` use is a legacy/debug comparison only.
Issue creation is a separate explicit gate and requires operator mutation intent:
```bash
fak idea-scout --json --live
```
Do not infer permission to cross that gate from this skill matching. Validate selected contracts
through `fak-dev issue contract` and price any worker launch through `fak dispatch` before execution.
### 2 — SELECT: one highest-value repo-shaped lead (never a batch)
From the crawl, pick **one** lead that is **repo-shaped** — a GitHub URL, a
paper-with-code link, a named codebase — and where the field signal says the
parity-debt or novelty is highest. **Prefer the fresh-lane leads** (a `**Why
surfaced**` line marked `trending` / `very fresh` / `actively updated`): a repo that
just appeared or is climbing relative to ours is the highest-novelty, most-perishable
lead — study it before it's an incumbent everyone already read. One lead per pass is
the anti-storm bound (the same discipline as idea-scout's per-run cap). If nothing
fresh is repo-shaped, **stop clean** — an empty pass is a valid result; never invent
a lead to have something to do.
Prefer a lead that is *not already studied*: grep `docs/notes/CONCEPT-STUDY-*` and
`gh issue list --search` for its name first, so the loop doesn't re-study a repo a
prior pass (or a human) already decomposed.
### 3 — STUDY: hand the lead to `/study-repo` (do not restate it)
Require the returned study to expose both the default frontier and the **bounded-superset
coverage frontier**. Do not select leads only because they might replace fak's current default;
a lead is also high-value when it serves a credible user/job/constraint cohort through an
`OPTIONAL-MODULE` or `RECIPE` seam. Deprioritize feature-count novelty, genuinely superseded
approaches, and moment-in-time claims without a dated `WATCH` review trigger. This keeps
scouting broad in user coverage but bounded by fak's scope and support economics.
Invoke [`/study-repo`](../study-repo/SKILL.md) on the selected lead. That skill
owns the whole acquisition front-half — shallow-clone **into scratch, never the
tree**, pin the commit `@sha`, read the CODE (load-bearing modules + tests + recent
commits) not the README pitch, extract candidate borrows each grounded at a real
`path:line@sha`, and decide borrow-vs-integrate on the license. Do not re-implement
any of that here; drive it.
### 4 — WITNESS + FILE: `/field-borrow`'s witness step, then file small
For **each** surviving candidate, run [`/field-borrow`](../field-borrow/SKILL.md)'s
witness step — dogfood `fak_feature_query` / `fak index docs|leaves|verbs|claims`
(plus a raw `Grep` to guard the lexical ranker's false-ABSENT) → classify
**PRESENT / PARTIAL / ABSENT**:
- **PRESENT** → fak already has it: drop the candidate, record the card. A
witnessed "we already had this" is a real, good result — not a miss.
- **PARTIAL / ABSENT** → ground it in the **fak seam** (`path:line` in *fak*), then
file a **small independently-shippable leaf** under the right epic, carrying
**both** anchors (source `path:line@sha` + fak seam), the dogfood witness, and a
first checkable step. Dedup first (`gh issue list --search`). **Never a
monolith** — the ship-alone test from `/study-repo` step 5. **Leak-check every
body**: no absolute path, host, secret, or PII from the foreign clone.
### 5 — REGISTER: the trail, or it lived only in a transcript
Record the pass in a dated `docs/notes/CONCEPT-STUDY-<repo>-<date>.md` (URL +
pinned `@sha`, what you read, the borrow · source `path:line@sha` · witness ·
inspire|integrate · filed # table), add its **`INDEX.md`** line, and commit the
docs lane by explicit path with a `(fak docs)` trailer. This registration — not
the issues alone — is what makes the research durable and keeps `fak index
freshness` clean.
### 6 — CADENCE: set it to run (unattended)
One *pass* is above; the *loop* is a cadence of passes. Two shapes:
- **In-session (attended).** Run steps 1–5 now for one lead, then stop. Re-run for
the next lead when you choose.
- **Scheduled (unattended).** `tools/register_scout_loop.ps1` installs a daily
Scheduled Task (`FleetScoutLoop`) that fires one pass via a detached `/goal`
worker reading `.claude/goal-prompts/scout-and-study-witnessed.md`. **Plan by
default** — installed without `-Launch`, the fire runs the launcher in
`-PlanOnly` mode and spawns nothing; `-Launch` is the explicit opt-in. Same
safe-by-default contract as `register_idea_scout.ps1` and `/super-loop`.
```powershell
.\tools\register_scout_loop.ps1 # install, PLAN-mode daily (spawns nothing)
.\tools\register_scout_loop.ps1 -Action status
.\tools\register_scout_loop.ps1 -Launch -At 10:30 # go live: one detached study pass/day, after the 09:00 idea-scout
```
Because each fire spawns a Claude session, the launch path keeps the
`dispatch_preflight.py` no-DoS cap intact (`launch_goal_detached.ps1` re-checks
`SPAWN_OK` per spawn) — never route around it with `-SkipPreflight`.
## The honesty boundary (do not cross)
- **A crawl is not a borrow; a study is not a ship.** This loop files *triaged,
witnessed* backlog. It NEVER reports an issue resolved — ancestry (`Fixes #N` on
the trunk) does that. It hands its filed leaves to the dispatch loop /
`/super-loop`, which resolve them.
- **Every borrow cites a real `path:line@sha`** in an actually-cloned source, never
a README claim — the `dos_citation_resolve` fabrication class `/study-repo`
exists to catch.
- **Witness before file.** A PARTIAL/ABSENT is grounded in a dogfood witness; a
PRESENT is dropped, not filed. "fak already has this" is a complete pass.
- **Decompose, never a monolith.** No "adopt everything from repo X" leaf — the
ship-alone test decides.
- **One lead per pass.** The anti-storm bound; the loop's throughput is a cadence,
not a batch.
- **Clone into scratch, never `C:\work\fak`.** The foreign tree must never be
committable (the `*scratchpad*` gitignore is a backstop, not the plan).
## What "done" proves (per pass)
- One repo-shaped lead was **cloned and read at a pinned `@sha`**; every filed
borrow cites real code.
- Each filed leaf carries a **source `path:line@sha`**, a **fak seam**, a **dogfood
witness (PRESENT/PARTIAL/ABSENT)**, and a **first checkable step**; PRESENT cases
were dropped, not re-filed.
- **No monolith** was filed; the work is small independently-shippable leaves under
the right epic.
- The pass is **registered**: a dated `docs/notes/CONCEPT-STUDY-*` note + its
`INDEX.md` line; `fak index freshness` reads clean.
- If unattended: the `FleetScoutLoop` fire is witnessed in the loop ledger
(`fak loop status`), and no issue was reported "resolved" by the loop.
## Anti-patterns
- ❌ Re-implementing the crawl (re-scanning arXiv) or the study (re-reading the
clone logic) — drive `idea-scout` / `/study-repo` / `/field-borrow`, don't
duplicate them.
- ❌ Studying a batch of leads in one pass — one lead, then stop; the cadence is the
throughput.
- ❌ Filing a borrow you did not locate at a real `path:line@sha`, or the
"adopt repo X" monolith.
- ❌ Filing a PRESENT capability fak already ships — the witness step exists to drop
it.
- ❌ Cloning the foreign repo into the fak tree, or leaking an absolute path / host /
secret from it into a fak ticket.
- ❌ Installing the scheduled task with `-Launch` before a plan-mode fire is
witnessed, or passing `-SkipPreflight` to route around the no-DoS cap.
- ❌ Reporting a filed leaf as "resolved" — a crawl/study is not a ship; ancestry is.
- ❌ Inventing a lead when the crawl is empty — a clean empty pass is the correct
result.
## When NOT to use
- **You were handed one specific repo.** Go straight to `/study-repo`; the loop is
overhead for a single known lead.
- **You have a named capability to check.** Use `/field-borrow` directly.
- **You want to resolve the backlog, not grow it.** That's `/super-loop` /
`/dos-dispatch` — the resolve side of the loop, which consumes what `scout-loop`
files.
- **The idea-scout queue and the field scans are empty/stale with nothing new.**
Nothing to convert — an empty pass, not a forced study.
## Honest limits
- **The witness is lexical + a snapshot.** `fak_feature_query`'s ranker is
substring matching (false-ABSENT risk) and its verdict is true only as of today
— re-witness before acting on an old pass (same caveat as `/field-borrow` /
`/study-repo`).
- **The crawl is only as fresh as its feeders.** If `FleetIdeaScout` hasn't run,
the triage queue is stale; the loop studies what's there, it does not force a
re-scan.
- **Composes with, does not replace:** `idea-scout` (the feed), `/study-repo` (the
acquisition front-half it drives), `/field-borrow` (the witness+file back-half),
`/industry-score` (a witnessed PRESENT/PARTIAL/ABSENT is a coverage row it can
absorb), `/super-loop` (resolves the leaves this loop files).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!