Node Templates
// Individual building blocks for your workspace workflows
export Working branch
// Create the plan's working branch in a GitHub repository, off a base branch, and hand every downstream node the repository to work in. Lanes branch off it and open their pull requests back into it; the Codebase map reads it. Re-running reuses an existing branch and never moves it. Needs a GitHub connection that can write to the repository.
export Sync with base
// Bring a branch up to date by merging another branch into it on GitHub — one merge commit, like GitHub's "Update branch" button. Never rebases or force-pushes. A conflict is reported as a result, with nothing written. Use it on a Lane's branch after another Lane was merged into the working branch, or on the working branch when its base moved. Refuses the default branch and protected branches. Do not run it while a Lane is working on the branch.
export Branch cleanup
// Delete the branches earlier plans left behind in a GitHub repository — never work that exists nowhere else. Run it with no branches to look: every branch under a prefix (vibe/ by default), what deleting it would lose, and a ready question card offering only the safe ones (merged, or kept on a closed pull request). Run it again with the picked branches to delete them; each is re-checked first. Never touches the default branch, protected branches, the working branch or anything kept.
export Branch compare
// Compare two branches of a GitHub repository: commits ahead and behind, the files changed, and the pull requests open from the branch or into it. No model — read straight from GitHub, so it is cheap to run again after a merge. Wire `repo` from "Working branch".repo to compare the working branch with its base. Reads only.
export Merge PR
// Merge a Lane's pull request into the plan's working branch — and only there: the default branch, protected branches and any pull request into another branch are refused, so what ships to the base is always merged by a person. Lands exactly the commit that was checked (wire PR status's `head_sha`), and only when nothing blocks it — the same blockers PR status shows. Marks a draft ready first. Squash by default. Run it only after the user said to merge.
export PR status
// Everything to check before merging a pull request, read from GitHub with no model: open or merged, draft, whether it still merges cleanly or fell behind its base, CI on its head commit, the review decision, and the review comments still open. Returns `blockers` — the same list Merge PR refuses on — and turns open comments from people with write access into fixes plus a ready question card, the same shape as Code review's. Wire a Lane's `pr_url`. Reads only.
export Pull request
// Open a pull request between two branches of a GitHub repository — or, when one is already open, update that one (title, its own part of the description, draft or ready). Never opens a second. Built for the pull request that ships the working branch to its base once the Lanes are merged: wire "Working branch".repo and "Working branch".base_branch. It never merges and never pushes; merging into the base stays a person's decision on GitHub.
export Web Search
// Search the public web (via Brave Search) and return a ranked list of result URLs (no snippets — deliberate, to avoid SERP-snippet hallucination). The output is a URL list; reading the content behind those URLs is a separate concern handled downstream. Pairs with: `Fetch URL as Markdown`.
export Odoo RPC
// Call an Odoo 19 model method (search_read, read, search, search_count, create, write, unlink, or a custom method) via the Odoo JSON-2 API. Uses the Odoo connection from account settings, or ODOO_URL / ODOO_API_KEY (and optional ODOO_DATABASE) as workspace secrets.
export Fetch URL as Markdown
// Fetch a batch of public URLs (1-50) and return per-URL Markdown ready for LLM consumption. Scrapes HTML and converts to Markdown via crawl4ai + Playwright + Chromium. Wire directly from `Web Search` — the urls input accepts the ranked URL array as-is. Returns parallel arrays (markdown, title, error) plus success_count and failed_count. On success each markdown item is prefixed with a Source/title header. Failure is encoded by empty markdown. Pairs with: `Web Search`.
export Lark Update Task
// Updates an existing Lark task. Can modify title, description, due/start dates, and mark tasks as complete. Only provided fields are updated.
export Lark Get Tasklist
// Fetches a single Lark tasklist (board) by its ID. Returns the tasklist name, owner, and members. Re-execute to refresh.