Skip to content
Development
Skill

/vibe-skill

Delegate a coding task to Mistral Vibe and supervise the result via git diff. Trigger: /vibe <instruction>. Claude orchestrates, Vibe codes. Also handles /vibe-report [--since N] [--project NAME] [--fails] — token/cost/failure report.

From plugin
vibe-skill
1181 skill
Install
$ npx -y skills add pcx-wave/vibe-skill --skill vibe-skill --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vibe-skill

Context preview

The summary Claude sees to decide when to auto-load this skill.

Delegate a coding task to Mistral Vibe and supervise the result via git diff. Trigger: /vibe <instruction>. Claude orchestrates, Vibe codes. Also handles /vibe-report [--since N] [--project NAME] [--fails] — token/cost/failure report.

SKILL.md

vibe-skill.SKILL.md
name: vibe
description: >
  Delegate a coding task to Mistral Vibe and supervise the result via git diff.
  Trigger: /vibe <instruction>. Claude orchestrates, Vibe codes.
  Also handles /vibe-report [--since N] [--project NAME] [--fails] — token/cost/failure report.
license: MIT
user-invocable: true
allowed-tools:
  - Bash
  - Read
  - Grep

Vibe Orchestrator

/vibeon | /vibeoff | /vibestatus

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

| Command | Action | |---------|--------| | `/vibeon` | `touch ~/.local/share/vibe-auto.flag` → confirm "Auto-vibe ON" | | `/vibeoff` | `rm -f ~/.local/share/vibe-auto.flag` → confirm "Auto-vibe OFF" | | `/vibestatus` | report 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: <default from ~/.vibe/config.toml>  (config default)

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

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

| Task signal | Action | |---|---| | 1 file, ≤10 lines, exact location already known | Edit directly — do NOT invoke the skill | | Logic non-trivial, location unclear, multiple files, HTML/JS content, or >1 change | Invoke `/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 says | Flag | |-----------|------| | "last 7 days", "7d" | `--since 7` | | "last 30 days", "30d" | `--since 30` | | "project foo" | `--project foo` | | "only failures", "fails", "bugs" | `--fails` | | "adapt", "adaptations", "by adaptation" | `--adapt` | | "all delegates", "everything", "compare delegates" | `--all` | | "delegate foo", "only opencode" | `--delegate foo` | | (nothing) | (no flags — vibe runs only) |

The report defaults to **vibe runs only**. The log is shared across delegate tools (vibe, opencode, gemini); use `--all` for the cross-delegate comparison or `--delegate NAME` to scope to a different one.

---

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

Override the Vibe model for all subsequent delegations without touching `~/.vibe/config.toml`.

| Command | Action | |---------|--------| | `/vibe-model-pick <alias>` | `echo <alias> > ~/.local/share/vibe-model.flag` → confirm | | `/vibe-model-clear` | `rm -f ~/.local/share/vibe-model.flag` → confirm "back to config default" |

**Aliases are machine-specific** — read the actual list (and the default) from `[[model]]` entries in `~/.vibe/config.toml` before suggesting one; never assume an alias from this table exists. Example snapshot from one machine:

| Alias | Model | Provider | Notes | |-------|-------|----------|-------| | `deepseek-flash` | deepseek-v4-flash | DeepSeek | Default — fast, cheap; solid for inline edits | | `mistral-medium-3.5` | mistral-vibe-cli-latest | Mistral | Stronger reasoning; reliable for inline edits | | `devstral-small` | devstral-small-latest | Mistral | Agent-mode — read/explore only, weak at inline edits | | `local` | devstral (llamacpp) | Local | Requires 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 — not config options. Full details in `SKILL-reference.md`.

  • **UTF-8 / special chars** → silent `search_replace` match failure. Use `python3 str.replace()` for accented chars or emoji.
  • **Code duplication** → Vibe may re-insert a block already written. Grep for duplicate definitions after every run.
  • **HTML in prompt** → tags like `<div>` are shell redirects (exit 127). Write HTML content to a temp file; reference the path in the prompt.
  • **Source code in bash heredoc** → quotes/backslashes mangle. Use `search_replace` directly; never a helper script that replaces code.
  • **`read_file` caps at 50 KiB / 2000 lines** → a larger file comes back as `read_file failed: Output (N KiB) exceeds maximum allowed size`, and Vibe then re-reads it in slices, so it may reason about only *part* of the file without saying so. Keep any file you hand it (diffs, generated inputs) under 50 KiB — split by area rather than dumping one big diff.
  • **Files outside the workdir are unreadable** → `--trust` does NOT cover them. Any path outside `workdir` raises an `outside_directory` approval that is auto-denied headlessly: the run exits **0** with 0 tool calls and, before the 2026-08-02 parser fix, said nothing at all. **Any file the prompt points Vibe at must live inside the workdir.** Stage temp inputs in a gitignored dir in the repo, not `/tmp`.
  • **Orchestration chain** → 6 failure points in order: CLI auth → pseudo-TTY → stream parser → TOML pricing → git diff → JSON log. When a run produces unexpected results, work down this list. Full details in `SKILL-reference.md`.

---

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**: keep tasks **atomic and focused** — one objective, one prompt.

| Size | Definition | Max turns | Approach | |------|-----------|-----------|----------| | **Trivial** | 1 file, change is obvious and located | — | **Skip delegation — edit directly** | | **Simple** | 1 file, non-trivial logic or unknown location | 5–8 | 1 vibe call | | **Medium** | 2–3 related files, 1 objective | 8–12 | 1 structured vibe call | | **Complex** | >3 files OR business logic OR DB migrations | — | **Break 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 i
Read more
Ships withvibe-skill

Claude orchestrates. Vibe does the heavy lifting. You review the diff, save tokens, costs and avoid hitting limits!

Get the whole plugin
Stats
118
Stars
12
Forks
Maintained
Maintenance
Shell
Language
1mo ago
Last commit
4mo ago
Created

Repo: pcx-wave/vibe-skill