| 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
-
Today's date. Use the real current date as YYYY-MM-DD (it stamps the CSVs — never hardcode).
-
Check the queue.
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.
-
Launch the Workflow (one batch, self-committing):
Workflow({
scriptPath: "skill-scout/harness/overnight.workflow.js",
args: { limit: 25, today: "<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.
-
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: ["<slug>", …] |
| 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.