--- name: skill-scout description: Run the skill-scout loop — scan the next batch of unscanned JVM-conference rosters for speaker-created AI skills and apply results to the CSV store via the overnight Workflow. Use when the user says "run skill-scout", "continue the skill-scout loop", "scan more conferences", or wants to grow the skill candidate list. invocation: user --- # Run skill-scout Launch the skill-scout loop over the unscanned conference queue. Full design + pipeline: `skill-scout/README.md`. Invoking this skill **is** the explicit opt-in to run the Workflow. ## Steps 1. **Today's date.** Use the real current date as `YYYY-MM-DD` (it stamps the CSVs — never hardcode). 2. **Check the queue.** ```bash python3 skill-scout/harness/queue.py | python3 -c "import json,sys; d=json.load(sys.stdin); print(len(d['confs']),'unscanned'); [print(' ',c['slug']) for c in d['confs'][:30]]" ``` If **0 unscanned**: the queue is empty — tell the user to append fresh JVM/Kotlin conferences (2024–26) to `skill-scout/db/conferences.csv`, or stop. Do not fabricate conferences. 3. **Launch the Workflow** (one batch, self-committing): ``` Workflow({ scriptPath: "skill-scout/harness/overnight.workflow.js", args: { limit: 25, today: "", autoCommit: true } }) ``` - `limit: 25` covers a full batch (the tested size); pass a smaller `limit` for a quick run. - `autoCommit: true` makes ONE scoped commit at the end (only `skill-scout/db`, `candidates.md`, `review.html`, `rules/*.md`; aborts if anything else is staged). Omit it if the user wants to review `review.html` before committing. - It runs in the background; a task-notification fires on completion. 4. **On completion, report the delta** from the result JSON: `found` / `needs_review` / `bundles`, the per-conf `validation` (must be `PASS`), and `browserNeeded` (confs whose roster needed the agent-browser fallback and may warrant a re-run). Then point the user at `skill-scout/review.html` — the human reviews it and promotes rows into `skills/*.yaml` (see top-level `CONTRIBUTING.md`). ## Options (pass in `args` when asked) | Want | Arg | |---|---| | Higher-rigor adversarial recheck | `recheckModel: "opus"` (slower/pricier; delete stale `harness/recheck_*.json` first — the cache is model-blind) | | Dry run (no CSV writes) | `dryApply: true` | | Specific conference(s) only | `slugs: ["", …]` | | Re-judge from cached scans (no re-scan) | `evalOnly: [{slug,name,url}, …]` | ## Notes - One conference is the unit of work; the `db/*.csv` files are the state. A relaunch resumes cheaply from the per-conf caches in `harness/` (gitignored), so an interrupted run is safe to re-launch. - A full-queue run is long (serial GitHub scan, ~15 min/conf) — it's meant to run AFK. Monitor with `/workflows`; serial phases self-recover from GitHub rate-limiting.