yoetz

Fast CLI-first LLM council, bundler, and multimodal gateway. Use ONLY when user explicitly mentions "yoetz", "yoetz ask", "yoetz council", "yoetz review", "yoetz generate", "yoetz bundle", "yoetz browser". NOT triggered by generic "second opinion" or "ask another model" requests.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "yoetz" with this command: npx skills add avivsinai/yoetz/avivsinai-yoetz-yoetz

Yoetz Skill

Fast, agent-friendly LLM council tool for multi-model consensus, code review, and bundling.

When to Use

Explicit triggers only:

  • "yoetz ask" / "yoetz council" / "yoetz review"
  • "yoetz bundle" / "yoetz generate" / "yoetz browser"
  • "use yoetz to..."

NOT triggered by:

  • "second opinion" / "ask another model" (could be amq-cli)
  • "council" alone / "review" alone (other skills may apply)

Installation (auto-bootstrap)

Before running any yoetz command, ensure the CLI is installed. If command -v yoetz fails, install via one of the following:

PlatformCommand
macOS (Homebrew)brew install avivsinai/homebrew-tap/yoetz
Linux (Homebrew if available)brew install avivsinai/homebrew-tap/yoetz
From source (Rust 1.88+)cargo install --git https://github.com/avivsinai/yoetz
Windows (Scoop)scoop bucket add yoetz https://github.com/avivsinai/scoop-bucket && scoop install yoetz
Pre-built binaryDownload from GitHub Releases and place in PATH

Prefer Homebrew when available — pre-built binaries, fastest install.

Agent Contract

  • Always use --format json for parsing
  • Set YOETZ_AGENT=1 environment variable
  • Parse JSON results and present summary to user
  • For large bundles, run yoetz bundle first to inspect size
  • Always resolve uncertain model IDs with yoetz models resolve before calling

Model Discovery

Before using an unfamiliar model ID, resolve it against the synced registry:

yoetz models resolve "grok-4" --format json

Example output:

[{"id":"x-ai/grok-4","score":800,"provider":"openrouter","context_length":131072,"max_output_tokens":16384}]

If the registry is stale or empty, sync first:

yoetz models sync

Search for models by keyword:

yoetz models list -s claude --format json

Quick Reference

TaskCommand
Ask single modelyoetz ask -p "question" -f src/*.rs --provider openai --model gpt-5.4 --format json
Council voteyoetz council -p "question" --models openai/gpt-5.4,gemini/gemini-3.1-pro-preview,openrouter/xai/grok-4.20-multi-agent-beta --format json
Review staged diffyoetz review diff --staged --format json
Review fileyoetz review file --path src/main.rs --format json
Bundle filesyoetz bundle -p "context" -f src/**/*.rs --format json
Generate imageyoetz generate image -p "description" --provider openai --model gpt-5-image --format json
Resolve model IDyoetz models resolve "grok-4" --format json
Search modelsyoetz models list -s claude --format json
Estimate costyoetz pricing estimate --model gpt-5.4 --input-tokens 1000 --output-tokens 500
Browser loginyoetz browser login
Browser checkyoetz browser check
Browser cookie syncyoetz browser sync-cookies

Council (Multi-Model Consensus)

Get opinions from multiple LLMs in parallel. --models is required.

yoetz council \
  -p "Should we use async traits or callbacks for this API?" \
  -f src/lib.rs -f src/api/*.rs \
  --models openai/gpt-5.4,gemini/gemini-3.1-pro-preview,openrouter/xai/grok-4.20-multi-agent-beta \
  --format json

Example council sets:

  • Cross-provider: openai/gpt-5.4,gemini/gemini-3.1-pro-preview,openrouter/xai/grok-4.20-multi-agent-beta
  • Via OpenRouter only: openrouter/openai/gpt-5.4,openrouter/anthropic/claude-sonnet-4.6,openrouter/google/gemini-3.1-pro-preview

Ask (Single Model)

Quick question with file context:

yoetz ask \
  -p "What's the bug in this error handling?" \
  -f src/error.rs \
  --provider openai --model gpt-5.4 \
  --format json

For Anthropic/XAI models, use OpenRouter (no extra config needed):

yoetz ask -p "Review this" -f src/*.rs \
  --provider openrouter --model anthropic/claude-sonnet-4.6 \
  --format json

Review

Staged changes

yoetz review diff --staged --format json

Specific file

yoetz review file --path src/main.rs --format json

With custom model

yoetz review diff --staged --provider openai --model gpt-5.4 --format json

Bundle (for manual paste or browser mode)

Bundle creates a session with files at ~/.yoetz/sessions/<id>/bundle.md.

# Get bundle path from JSON output
yoetz bundle -p "Explain this" -f src/**/*.rs --format json
# Output includes: {"artifacts":{"bundle_md":"/Users/.../.yoetz/sessions/.../bundle.md",...},...}

# Extract bundle_md path directly
BUNDLE=$(yoetz bundle -p "Review" -f src/*.rs --format json | jq -r .artifacts.bundle_md)
cat "$BUNDLE"

For browser workflows, pass the bundle.md path:

BUNDLE=$(yoetz bundle -p "Review" -f src/*.rs --format json | jq -r .artifacts.bundle_md)
yoetz browser recipe --recipe chatgpt --bundle "$BUNDLE"

Browser Fallback (Experimental)

For web-only models like ChatGPT Pro that lack API access. Uses Oracle-style cookie extraction from real Chrome to bypass Cloudflare challenges.

Prerequisites

# Node >=24.4 required for Chrome cookie sync. agent-browser is auto-resolved via npx if not in PATH.
# Homebrew and GitHub release installs bundle the cookie extractor dependency.
# If you're running from a source checkout, install it once:
npm ci --prefix scripts

Profile location

Default profile dir: ~/.config/yoetz/browser-profile/

Override per machine:

export YOETZ_BROWSER_PROFILE=/path/to/profile

First-time setup

Step 1: Log into ChatGPT in real Chrome

  1. Open Chrome (the real browser, not Playwright)
  2. Navigate to https://chatgpt.com/
  3. Log in with your account
  4. Close Chrome completely

Step 2: Sync cookies to agent-browser

yoetz browser sync-cookies

This extracts your authenticated cookies from Chrome and saves them for agent-browser. State file is stored at ~/.config/yoetz/browser-profile/state.json (or your overridden profile path). If macOS shows a Keychain prompt for Chrome Safe Storage, click Always Allow.

Step 3: Verify authentication

yoetz browser check

Re-sync when sessions expire

If you see Cloudflare challenges or login prompts, re-sync:

# Log into ChatGPT in real Chrome, close Chrome, then:
yoetz browser sync-cookies
yoetz browser check

Use ChatGPT Pro via recipe

# Create bundle and get bundle.md path
BUNDLE=$(yoetz bundle -p "Review this code" -f src/*.rs --format json | jq -r .artifacts.bundle_md)

# Send to ChatGPT
yoetz browser recipe --recipe chatgpt --bundle "$BUNDLE"

# Override the built-in model selection if needed
yoetz browser recipe --recipe chatgpt --bundle "$BUNDLE" --var model=gpt-5-4-pro

Combined workflow: API + Browser

# Get fast API results first
yoetz council -p "Review" -f src/*.rs \
  --models openai/gpt-5.4,gemini/gemini-3.1-pro-preview --format json > api.json

# Then get ChatGPT Pro opinion
BUNDLE=$(yoetz bundle -p "Review" -f src/*.rs --format json | jq -r .artifacts.bundle_md)
yoetz browser recipe --recipe chatgpt --bundle "$BUNDLE"

Recipe name resolution

Recipes can be specified by name (resolved from installed locations) or by path:

# By name (searches Homebrew share, XDG, etc.)
yoetz browser recipe --recipe chatgpt --bundle "$BUNDLE"

# By explicit path
yoetz browser recipe --recipe ./my-recipes/custom.yaml --bundle "$BUNDLE"

Built-in recipes: chatgpt, claude, gemini.

Troubleshooting

SymptomFix
extract-cookies.mjs not foundReinstall yoetz so the bundled browser scripts are present
cookie extraction failedEnsure Node >= 24.4, and if you're running from a source checkout run npm ci --prefix scripts. Then log into ChatGPT in real Chrome, close Chrome, and if macOS shows a Chrome Safe Storage prompt click Always Allow
cloudflare challenge detectedRe-sync: log into ChatGPT in Chrome, close Chrome, yoetz browser sync-cookies
chatgpt login requiredRun yoetz browser login for manual auth, or sync cookies
agent-browser failedEnsure npx agent-browser --version works, or npm install -g agent-browser
Recipe not foundUse --recipe chatgpt (name) or full path. Check brew --prefix/share/yoetz/recipes/

Claude-in-Chrome MCP Fallback

When yoetz browser pipeline fails (agent-browser issues, cookie extraction errors), use Claude-in-Chrome MCP tools directly:

  1. Create bundle: yoetz bundle -p "Review" -f src/**/*.ts --format json
  2. Copy to clipboard as file: Use macOS osascript to put the bundle.md on clipboard:
    osascript -e 'set the clipboard to POSIX file "/path/to/bundle.md"'
    
  3. Navigate to ChatGPT: Use mcp__claude-in-chrome__navigate to open chatgpt.com
  4. Paste file: Click the input area, then Cmd+V to paste the file from clipboard
  5. Type prompt: Use mcp__claude-in-chrome__form_input or computer tool to type the review prompt
  6. Wait and extract: Use mcp__claude-in-chrome__get_page_text to extract the response

This bypasses agent-browser entirely and works with any browser-based LLM the user is logged into.

How it works

The browser module uses stealth techniques to avoid Cloudflare detection:

  • Extracts real cookies from Chrome's encrypted cookie store
  • Injects them into Playwright via --state
  • Uses realistic User-Agent headers
  • Disables automation detection flags (--disable-blink-features=AutomationControlled)

Provider Configuration

Built-in providers (work with just env var):

  • openai - OPENAI_API_KEY
  • gemini - GEMINI_API_KEY
  • openrouter - OPENROUTER_API_KEY

Via OpenRouter (recommended for Anthropic/XAI - no extra config):

  • openrouter/anthropic/claude-sonnet-4.6
  • openrouter/xai/grok-4.20-multi-agent-beta

Model format: provider/model

  • openai/gpt-5.4
  • gemini/gemini-3.1-pro-preview
  • openrouter/anthropic/claude-sonnet-4.6 (nested for OpenRouter)

Cost Control

# Estimate before running
yoetz pricing estimate --model gpt-5.4 --input-tokens 12000 --output-tokens 800

# Set limits
yoetz ask -p "Review" --max-cost-usd 1.00 --daily-budget-usd 5.00 --format json

Tips

  • Use --debug to capture raw responses during troubleshooting
  • Gemini may return empty content if --max-output-tokens is too low
  • Session artifacts stored in ~/.yoetz/sessions/<id>/
  • For image inputs: yoetz ask -p "Describe" --image photo.png --format json
  • ChatGPT recipe placeholder may vary by locale; check snapshot output if fill fails

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

bkt

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

jk

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

amq-cli

No summary provided by upstream source.

Repository SourceNeeds Review
General

langfuse

No summary provided by upstream source.

Repository SourceNeeds Review