codex-lane-worker
Bounded Codex Lane writer protocol for one assigned task. Use only when the lane runtime assigns this worker.
Tavily REST search and cited research. Key from `$TAVILY_API_KEY` (BB: Env Catalog `TAVILY_API_KEY`; terminal outside BB: `~/secrets/tavily.env`). Use when: tavily, поиск в интернете, cited report, источники с URL. SKIP: one known URL (WebFetch); X/Twitter slang (grok); SEO SERP
$ npx -y skills add VKirill/claude-lane-stack --skill tavily --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/tavilyContext preview
The summary Claude sees to decide when to auto-load this skill.
Tavily REST search and cited research. Key from `$TAVILY_API_KEY` (BB: Env Catalog `TAVILY_API_KEY`; terminal outside BB: `~/secrets/tavily.env`). Use when: tavily, поиск в интернете, cited report, источники с URL. SKIP: one known URL (WebFetch); X/Twitter slang (grok); SEO SERP
name: tavily description: "Tavily REST search and cited research. Key from `$TAVILY_API_KEY` (BB: Env Catalog `TAVILY_API_KEY`; terminal outside BB: `~/secrets/tavily.env`). Use when: tavily, поиск в интернете, cited report, источники с URL. SKIP: one known URL (WebFetch); X/Twitter slang (grok); SEO SERP (seo-specialist)." argument-hint: "[search|research]"
Host skill. Not the skills.sh `tvly` CLI pack. REST only.
Session agent: `tavily` (`cc tavily`). Copy-lead writes under `.agents/copy/research/inbox/`.
Key, in this order: `$TAVILY_API_KEY` if it is set (BB sessions get it from the Env Catalog); else the Env Catalog entry `TAVILY_API_KEY` (`env_get`); else, only in a terminal session outside BB, the file:
if [ -z "${TAVILY_API_KEY:-}" ] && [ -f ~/secrets/tavily.env ]; then set -a; source ~/secrets/tavily.env; set +a; fi
test -n "${TAVILY_API_KEY:-}" || { echo "MISSING TAVILY_API_KEY (env, Env Catalog or ~/secrets/tavily.env)"; exit 1; }Inside a BB / Lane Pilot session do not read `~/secrets/tavily.env`: the key is already in the session or in the Env Catalog. No key anywhere → stop and report. Do not print the key. Do not `npx skills add`.
Query = search string, **< 400 chars**, not an essay. Split fat questions into 2–4 calls.
One note per query. Never append to a single `web.md`.
if [ -d .agents/copy ]; then INBOX=.agents/copy/research/inbox else INBOX=.agents/research/inbox fi STAMP=$(date +%F)-<slug> mkdir -p "$INBOX"
Copy the research-note template to `$INBOX/$STAMP.md`. Dump JSON beside it as `$STAMP.json`. Add a row to `.agents/copy/INDEX.md` when that board exists. Do not dump raw HTML into chat.
Facts, examples, language snippets, a handful of URLs. Seconds.
curl -sS -X POST https://api.tavily.com/search \
-H "Authorization: Bearer $TAVILY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"<QUERY>","max_results":5,"search_depth":"basic","include_answer":true}' \
> "$INBOX/$STAMP.json"Useful fields (omit if unused):
| Field | Values | |---|---| | `search_depth` | `basic` (default), `advanced` | | `max_results` | 1–20 | | `topic` | `general`, `news`, `finance` | | `time_range` | `day`, `week`, `month`, `year` | | `include_domains` / `exclude_domains` | arrays of hosts | | `include_raw_content` | `false` unless you need page text |
Then fill `$INBOX/$STAMP.md` (claim + URL + snippet). Invented slang = delete.
Only when the human wants a **cited report** (landscape / ЦА / compare) and a time budget. 30–120s. Not for «найди 3 примера».
`input` may be a longer brief than a search query.
req=$(curl -sS -X POST https://api.tavily.com/research \
-H "Authorization: Bearer $TAVILY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input":"<BRIEF>","model":"mini","output_length":"standard"}')
echo "$req" > "$INBOX/$STAMP-job.json"
id=$(python3 -c 'import json,sys; print(json.load(sys.stdin)["request_id"])' <<<"$req")
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do
code=$(curl -sS -o "$INBOX/$STAMP.json" -w '%{http_code}' \
-H "Authorization: Bearer $TAVILY_API_KEY" \
"https://api.tavily.com/research/$id")
[ "$code" = "200" ] && break
sleep 10
done| `model` | When | |---|---| | `mini` | one topic (~30s) — default | | `pro` | compare / multi-angle (~60–120s) | | `auto` | let Tavily pick |
Ask duration if unknown: «Сколько крутить ресёрч?» Unknown → `mini`.
Copy `content` + `sources` into `$INBOX/$STAMP.md` (`kind: report`). Report sentences are leads, not buyer quotes. After a lift into copy files: `mv` the note to `research/used/`.
Claude Lane Stack is a self-hosted toolkit for coordinating coding agents through CLI processes, task contracts, Git workspaces, and verification receipts (bin/run-controller:117-159, schemas/task-v2.schema.json:1-60).
Bounded Codex Lane writer protocol for one assigned task. Use only when the lane runtime assigns this worker.
Operate Claude Lane Stack schema-v2 runs from Codex. Use for lane status, start, resume, review, verification, evidence, or…
Детекция и коррекция AI-сгенерированного текста по методике DrMax LinguaForensic v3.9.4 (284 лингвистических признака + 16…
Owner-facing architect for a new app or service. Plain-language chat; living plan artifacts on disk. Use when user says…
Live browser QA + Playwright-compatible replay. Disk .agents/qa/. Use when (terminal Lane Stack): проверь в браузере, кликни…
Delegate fat file reads to the project's pm_read worker. Use when a Read/cat/head/tail/sed of a file over pm_read.min_lines was…