codex-lane-worker
Bounded Codex Lane writer protocol for one assigned task. Use only when the lane runtime assigns this worker.
Claude Lane OpenCode half. How to add OpenCode behavior, diagnose a writer run, and what stays in lane-ctl. Use when user says opencode-lane, делай диагноз, OpenCode plugin, sticky contract, winnow on OpenCode, Jev effort, writer session plugin, or any new OpenCode feature in
$ npx -y skills add VKirill/claude-lane-stack --skill opencode-lane --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/opencode-laneContext preview
The summary Claude sees to decide when to auto-load this skill.
Claude Lane OpenCode half. How to add OpenCode behavior, diagnose a writer run, and what stays in lane-ctl. Use when user says opencode-lane, делай диагноз, OpenCode plugin, sticky contract, winnow on OpenCode, Jev effort, writer session plugin, or any new OpenCode feature in
name: opencode-lane description: Claude Lane OpenCode half. How to add OpenCode behavior, diagnose a writer run, and what stays in lane-ctl. Use when user says opencode-lane, делай диагноз, OpenCode plugin, sticky contract, winnow on OpenCode, Jev effort, writer session plugin, or any new OpenCode feature in claude-lane-stack. SKIP: product task YAML (lane-contract); run DAG (orchestrator-lanes); third-party OpenCode plugins (agentmemory, gemini-auth, open-cursor). argument-hint: "[info]"
If `$ARGUMENTS` is `info`, or the user says `info` / `справка` / `как запускать` this skill: print the block below **verbatim** (Russian), then **stop**. Do not edit the plugin.
opencode-lane — OpenCode-половина Claude Lane Роли - Claude Code = PM: run-init, run-supervisor, lane-ctl owns/verify/accept. - OpenCode = писатели (Grok и любой другой model через lane-session). - Этот плагин = единственное НАШЕ нововведение внутри OpenCode-сессии. Куда класть код - Вход: profiles/opencode/opencode-lane.ts (только re-export). - Код: profiles/opencode/opencode-lane/<mod>.ts + проводка в index.ts. - Живое: ~/.config/opencode/plugins/opencode-lane.ts (вход) + ~/.config/opencode/opencode-lane/ (модули, НЕ в plugins/: v2 грузит каждую папку там как плагин). - Гейт v2: агент lane-* (общий сервис, env сервиса не тредовый). v1: LANE_* маркеры процесса. - Не второй plugin-файл. Не новое имя в opencode.json. Конвейер - lane-session без --pure (плагин должен грузиться). - Env: LANE_TASK_FILE, LANE_PROMPT_FILE, LANE_STACK_ROOT, TYPESAFE_API_KEY. - Выкл Jev extra: LANE_OPENCODE_JEV=0. Выкл effort: LANE_JEV_EFFORT=0. - Fail-open: Jev/winnow упал → сессия как без плагина, строка в jsonl. Нельзя - owns / verify / accept / retry — не сюда (lane-ctl, lane-session). - Глотать чужие плагины (agentmemory-capture, gemini-auth, open-cursor). - Второй планировщик на Jev. Jev = System One, не coding LLM. Как открыть шпаргалку - Claude Code: /lane-stack:opencode-lane info - OpenCode TUI: /opencode-lane (файл ~/.config/opencode/commands/opencode-lane.md) - Не /lane-stack:… в палитре OpenCode — это namespace Claude-плагина, там его нет. Диагноз прогона - Сказать «делай диагноз». - Лог: сосед LANE_PROMPT_FILE → opencode-lane.jsonl при read-only .agents → ~/.config/opencode/opencode-lane.jsonl - Запуск/инструменты/stderr: provider.events.jsonl рядом с provider.out. - Связь: task + session + call/message ID; log_origin указывает попытку.
Canonical files: `profiles/opencode/opencode-lane.ts`, `profiles/opencode/opencode-lane/index.ts`, `bin/lane-session` (`attach_lane_contract_env`, opencode argv). Skills **lane-contract** (YAML) and **orchestrator-lanes** (DAG) stay separate.
Load **typesafe-ai** when adding a Jev question. Keep known rules in code; Jev only supplies a typed judgment.
---
| Layer | Owner | Lives in | |-------|--------|----------| | Task YAML, owns, acceptance | PM | `.agents/runs/` + **lane-contract** | | Dispatch, retry, session id | Controller | `bin/lane-session`, `lane-ctl` | | L1 verify / accept | Controller | `lane-ctl` — never the plugin | | Sticky YAML contract | Plugin | `sticky.ts` | | Winnow large tool output | Plugin | `index.ts` → sidecar `:47311` | | Effort route | Plugin | `chat.params` + `jev-route-core.ts` | | History compaction | OpenCode | No extra plugin compaction; message transforms preserve tool history | | Diagnose a failed tool | Plugin | `diagnose.ts` (hint only) | | Write-skill hint | Plugin | `skill-hint.ts` | | Acceptance vs last tool | Plugin | `evidence.ts` | | Failure telemetry | Plugin | `log.ts` → `opencode-lane.jsonl` | | All-tool progress | Plugin | `budget.ts` + `telemetry.ts`: full input/output fingerprints, call-ID deduplication, advisory repeat hints |
A judgment that **changes accept/retry/merge** belongs in `lane-ctl`, not here. The plugin may only append a `[opencode-lane …]` note and a jsonl row. The writer still decides; the controller still gates.
---
1. One module under `profiles/opencode/opencode-lane/`. One hook concern. 2. Wire it in `index.ts`. Re-export from `opencode-lane.ts` only if tests or agents import the symbol. 3. Fail-open: catch, `laneLog({ mod, ok: false, err })`, keep the session. 4. Brand every user-visible string `[opencode-lane <mod>]`. 5. `install.sh` already copies `opencode-lane.ts` + the folder. Do not add a second `plugin` list entry. 6. Copy live: `~/.config/opencode/plugins/opencode-lane.ts` and `plugins/opencode-lane/*.ts`. A checkout-only fix is not shipped. 7. One smallest test in `tests/test_jev_route.py` (string wire or a node `--experimental-strip-types` check). No extra harness.
OpenCode hooks this plugin uses:
Winnow still filters only read/grep/bash/shell. Novel output is evidence to inspect, not proof of task completion. `first_edit_callback_ms` measures a callback, not a verified file change.
If OpenCode grows a new hook, handle it in `index.ts`, not a sibling plugin.
---
User said **«делай диагноз»** — do this, then stop unless they said «чини».
1. Read the jsonl (newest last):
f="${LANE_PROMPT_FILE%/*}/opencode-lane.jsonl"
[ -f "$f" ] || f="$HOME/.config/opencode/opencode-lane.jsonl"
tail -n 40 "$f"2. Filter by `task`, `session`, and `log_origin` (the fallback is shared). Classify rows by `mod`: `startup` `telemetry` `jev` `route` `winnow` `sticky` `diagnose` `skill-hint` `evidence` `budget`. `ok: false` is an error or retry. `telemetry` records
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…