Skip to content

Memory & skills

Agents forget. Every new pane, every restart, every switch to a different CLI starts from nothing, and you end up explaining where the auth flow lives for the fourth time.

VibeGuild gives the project a memory instead of the agent. It is plain markdown inside your repo, every agent can read and write it, and every agent is told what's in it the moment it connects.

Project memory

Notes live in .vibeguild/memory/ inside the project folder. Because they sit in the repo and not in the app, they survive deleting the workspace, are shared by any workspace pointed at that folder, open in the editor like any other file, and are yours to commit or gitignore — a seeded README in the folder explains the choice to whoever finds it.

Agents work the memory through their own tools (memory_list, memory_search, memory_read, memory_write, memory_edit, memory_rename, memory_delete), and the rules exist so that several of them can't trample each other:

  • Writes are create-safe: replacing an existing note takes an explicit overwrite, so knowledge is never clobbered unread.
  • Notes link each other with [[note-name]]. Reads report a note's links, its dangling links, and its backlinks; renames rewrite every reference, so the graph never breaks.
  • Notes are typed — guidelines, decisions, handoffs, references — each with a one-line description and a modified date, which is what makes a listing readable rather than a pile of filenames.

Search is hybrid. Keyword matches come first, then notes that match the meaning of the query even when they share no words with it: "why do sessions expire" finds the token-rotation note. That runs on a small embedding model downloaded once in the background on first launch and never leaves your machine; until it's ready, search says so and works keyword-only.

The project brief

One note is special. The note named project-brief is handed to every agent automatically when it connects — a CLAUDE.md-style briefing that works for any agent CLI, written as a short index that links out to deeper notes. Every other note rides along as a one-line index in the same message, ordered by importance: guidelines (marked binding) above references and decisions, transient handoffs last. Code guidelines are always in front of every agent instead of buried three tool calls deep.

You never have to set this up. On a project with no brief, the first agent that connects is taught the concept and offers to bootstrap one, and the agents are steered to keep it current: store hard-won discoveries, search memory before non-trivial work, and retire notes that stopped being true.

Multi-repo workspaces

In a workspace holding several repos, each repo keeps its own store and the workspace level holds cross-repo knowledge. The workspace brief is the one loaded automatically; each repo's brief is advertised as a one-line pointer rather than paid for in full at every connect. Agents name a store when they write (project="frontend"), and a search with no store named covers all of them with tagged hits.

Skills

Where memory holds knowledge, a skill holds a procedure: a step-by-step markdown playbook — a release flow, an upgrade recipe, a debugging routine — that an agent follows instead of rederiving it. Agents use skill_list, skill_read, skill_write, skill_edit, and skill_delete.

Two scopes:

  • Project skills live in .vibeguild/skills/, next to the memory directory. They travel with the repo and are committable.
  • Global skills live under ~/.vibeguild/skills — this machine, every project. A project skill shadows a global one of the same name, and every listing says so honestly.

A one-line-per-skill index rides the same automatic injection as the brief, so "is there a skill for this?" costs no tool call. Finish a piece of repeatable multi-step work and the agent will propose saving it as a skill, asking first and picking the scope by where it applies.

The file format is plain markdown with two optional frontmatter keys: description: (one line: when to use it) and invoke: user for skills only you should trigger, which stay out of the agents' index.

Firing a skill yourself

Every skill is also a row in the command palette under "Skills". Picking one types the skill's body into the focused agent's terminal — exactly like pasting it yourself, never submitted, so you press Enter. Edit a global skill on disk and an open palette repaints live.

The Knowledge panel

v k (or the book icon in the panel's mode bar) opens your window into all of the above. The list mirrors exactly what agents are told: project memory in its importance order with the brief pinned on top and guideline notes badged as binding, then project skills, then global skills, with shadowed ones dimmed but still openable. Each repo in a multi-repo workspace gets its own section.

Pinned above everything sits "What agents see" — the verbatim instruction block injected into every agent at connect, brief and indexes included. A test guarantees it is byte-identical to the real injection, so "why does every agent keep doing that?" has a one-click answer.

Select anything and it opens in the same editor as your code, with a markdown Code/Preview toggle and Cmd/Ctrl+S. You can create memories and skills from frontmatter-seeded templates, rename a memory with every [[link]] rewritten for you, and delete behind a two-click arm. The brief itself can be edited but never deleted or renamed.

Agents keep writing while you look. The panel repaints live, a clean open file follows the disk silently, and an agent's edit landing under your unsaved edits raises a conflict banner — reload theirs or keep yours — rather than losing anyone's words. Memory stays agents-first; this panel is awareness and control, not a second write path fighting them.

Run your agent CLI outside the app and none of this exists.