SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

vibe

Desenvolvimento

O modo de delegação automática do Vibe Orchestrator permite que o Vibe gerencie tarefas de codificação automaticamente, eliminando a necessidade do comando /vibe a cada vez. Ative-o com /vibeon.

78estrelas
Ver no GitHub ↗Autor: pcx-wave

Vibe Orchestrator

/vibeon | /vibeoff | /vibestatus

Toggle auto-delegate mode — Vibe automatically handles coding tasks without requiring /vibe each time.

CommandAction
/vibeontouch ~/.local/share/vibe-auto.flag → confirm "Auto-vibe ON"
/vibeoffrm -f ~/.local/share/vibe-auto.flag → confirm "Auto-vibe OFF"
/vibestatusreport auto-mode (ON/OFF) and active model override

For /vibestatus, run both checks and print two lines:

Auto-vibe: ON | OFF
Model: <alias>  (override)  OR  Model: deepseek-flash  (config default)

Auto-mode pre-filter (when flag is set)

When vibe-auto.flag exists, apply this gate before loading the full skill:

Task signalAction
1 file, ≤10 lines, exact location already knownEdit directly — do NOT invoke the skill
Logic non-trivial, location unclear, multiple files, HTML/JS content, or >1 changeInvoke /vibe as normal

/vibe-report

If the user invokes /vibe-report, run ~/tools/delegate-report with any flags extracted from the arguments, display output verbatim, and stop.

User saysFlag
"last 7 days", "7d"--since 7
"last 30 days", "30d"--since 30
"project foo"--project foo
"only failures", "fails", "bugs"--fails
(nothing)(no flags — full report)

/vibe-model-pick | /vibe-model-clear

Override the Vibe model for all subsequent delegations without touching ~/.vibe/config.toml. Works via VIBE_ACTIVE_MODEL env var, which Vibe respects over the config file.

CommandAction
/vibe-model-pick <alias>echo <alias> > ~/.local/share/vibe-model.flag → confirm
/vibe-model-clearrm -f ~/.local/share/vibe-model.flag → confirm "back to config default"

Available aliases (from ~/.vibe/config.toml):

AliasModelProviderNotes
deepseek-flashdeepseek-v4-flashDeepSeekDefault — fast, cheap
mistral-medium-3.5mistral-vibe-cli-latestMistralStronger reasoning
devstral-smalldevstral-small-latestMistralLighter Mistral model
localdevstral (llamacpp)LocalRequires local server on :8080

Run the bash command, print one confirmation line showing the active model, and stop.


When the user invokes /vibe <instruction>, Claude delegates the implementation to Mistral Vibe via its programmatic mode, supervises in real time, and reports.


Known Limits

Hard constraints of Mistral Vibe CLI — not config options.

1. UTF-8 / special chars cause search_replace failures

Vibe's search_replace tool matches byte-for-byte. Accented chars, curly quotes, or emoji in old_string → silent match failure, no write. Workaround: use python3 str.replace() for those edits, or restructure the prompt to avoid them.

2. Code duplication bug

Vibe sometimes re-inserts a block it has already written (off-by-one in its diff logic). Check for duplicate function definitions or repeated class bodies after every run.

3. Orchestration chain has 6 independent failure points

The delegation pipeline is: vibe CLI → pseudo-TTY (script) → Python stream parser → TOML pricing lookup → git diff → JSON log. Each link can fail independently:

LinkFailure modeSymptom
Vibe CLIAuth expired, update broke APIImmediate exit, no output
pseudo-TTY (script)Platform difference (GNU vs BSD flags)Hangs silently or garbled output
Stream parserVibe changes its JSON schemaTool calls not detected, wrong token count
TOML pricingconfig.toml missing or renamedFalls back to Mistral Medium 3.5 rates
git diffNot a git repo, or Vibe committed mid-runWrong file count, misleading stat
JSON log~/.local/share/ not writableSilent log skip, /vibe-report misses the run

When a run produces unexpected results, check these links in order from top to bottom.

4. Never pass source code through a bash heredoc

Nested quotes, f-strings, or backslashes in inline bash << 'PYEOF' mangle escaping.

  • ASCII code: use search_replace directly.
  • Content too long for inline: ask Vibe to write to /tmp/new.py, then search_replace via open('/tmp/new.py').read().
  • Never write a helper script whose sole job is str.replace() on another file.

5. HTML tags in the prompt body cause shell redirect errors (exit 127)

<div>, </div>, <span> etc. embedded in the prompt string are interpreted by bash as file redirections. div is not a command → "No such file or directory", exit 127. Rule: if the prompt references or contains any HTML — even in a quoted description — write the content to a temp file first:

cat > /tmp/new_block.html << 'EOF'
<div class="map-sidebar">...</div>
EOF

Then reference it in the prompt: "Replace the sidebar block in templates/map.html with the content of /tmp/new_block.html." Vibe reads it with read_file, no shell parsing.

This also applies to JS files containing template literals (backticks) or JSX-like syntax.


Step 1 — Detect workdir

  1. git rev-parse --show-toplevel in the current directory.
  2. If ambiguous or no git repo → ask with AskUserQuestion.

Step 2 — Decompose the task

Critical rule: Vibe is optimized for atomic, focused tasks. Its system prompt literally says "Most tasks need <150 words."

SizeDefinitionMax turnsApproach
Trivial1 file, change is obvious and locatedSkip delegation — edit directly
Simple1 file, non-trivial logic or unknown location5–81 vibe call
Medium2–3 related files, 1 objective8–121 structured vibe call
Complex>3 files OR business logic OR DB migrationsBreak into sub-tasks

Decomposition for complex tasks:

Sub-task 1: Explore / read relevant files (read-only, 5 turns)
Sub-task 2: Implement change A in file X (8 turns)
Sub-task 3: Implement change B in file Y (8 turns)
Sub-task 4: Verify / test (5 turns)

→ Check git diff between each sub-task before launching the next.


Step 3 — Write the Vibe prompt

Vibe has no context from the parent conversation. The prompt must be self-contained.

Structure of a good Vibe prompt:

Stack: Python/Flask, SQLAlchemy, SQLite
Key files: app.py (routes + fetch), models.py (Entry)

TASK: [one single thing to do, stated as an imperative]

CONSTRAINTS:
- [what must not break]
- [expected format if relevant]

VERIFY: grep for "def function_name" in file.py and confirm it exists.

Formulation rules:

  • One task per prompt — never "also do X and Y"
  • Name the exact files to modify
  • Include a grep-based verification criterion (not a file re-read)
  • Language: English (better Mistral performance)

⚠️ Shell safety: if the prompt contains UTF-8 accented chars, emojis, : in Python/YAML code, or typographic apostrophes — the vibe-delegate script passes them safely via a temp file (printf %q). Never interpolate such a prompt directly into a bash heredoc.

Verification — always use grep, not file re-read:

VERIFY: grep for "def extract_labels" in app.py and confirm it exists.

A grep is reliable. A file re-read may miss content outside the read window.


Step 4 — Launch Vibe

~/tools/vibe-delegate "<workdir>" "<prompt>" [max-turns] [agent] [timeout-secs]
ArgumentDefaultNotes
workdirAbsolute path, must exist
promptSelf-contained task description
max-turns10Mistral turn limit — hard cap at 12, never more
agent(none)See agent t

Como adicionar

/plugin marketplace add pcx-wave/vibe-skill

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.