Vibe Rules
What are Vibe Rules?
Vibe Rules are instructions that shape how Claude Code behaves — coding style, framework preferences, project conventions, anything you want Claude to follow consistently.
The problem: every AI coding tool uses its own format. Cursor has .cursor/rules/*.mdc, Windsurf has .windsurfrules, Cline has .clinerules/*.md, and Claude Code uses CLAUDE.md. If you've written rules for one tool, they don't carry over.
Conare scans all of them and lets you load any rule into Claude Code with a single click.
Supported Sources
Conare scans 9 different rule formats, ordered by priority:
| Priority | Source | Format | Path |
|---|---|---|---|
| 20 | CLAUDE.md | Tagged blocks | CLAUDE.md in project root |
| 15 | Cursor | MDC frontmatter | .cursor/rules/*.mdc |
| 12 | Cline | Markdown | .clinerules/*.md |
| 11 | VS Code | Instructions | .github/instructions/*.instructions.md |
| 10 | AGENTS.md | Markdown | AGENTS.md in project root |
| 10 | .rules | Markdown | .rules file |
| 8 | Windsurf | Plain text | .windsurfrules |
| 5 | Global | JSON storage | ~/.vibe-rules/rules/ |
How Priority Works
When the same rule name exists in multiple sources, the highest priority wins. This means:
- A rule in
CLAUDE.md(priority 20) overrides the same rule from Cursor (priority 15) - Local rules always override global rules
- Duplicates are hidden in the UI — you only see the winning version
Loading Rules
Open the Vibe Rules panel
Click the sparkle icon in the right panel, or open it from Settings.
Browse discovered rules
Rules are grouped into Local (project-specific) and Global sections. Each shows the rule name, source, and a preview of the description.
Toggle rules on/off
Click the checkbox to load a rule into your active CLAUDE.md. The rule gets injected as a tagged block that Claude Code reads on every message.
Uncheck to unload — the block is removed from CLAUDE.md cleanly.
Creating Rules
Click New Rule to create a global vibe rule:
- Name — Short identifier (e.g.,
typescript-strict,no-any-types) - Content — The actual instructions for Claude
Rules are saved to ~/.vibe-rules/rules/<name>.json and are available in every project.
Example Rules
Strict TypeScript:
Always use strict TypeScript. Never use `any` type.
Use explicit interfaces for all function parameters.
Prefer `unknown` over `any` when the type is truly unknown.
Minimal Changes:
Keep code changes as minimal as possible.
Only modify what's directly requested.
Don't refactor surrounding code unless asked.
Don't add comments to code you didn't change.
Framework Conventions:
Use Nuxt 4 folder structure (app/ directory).
Use Pinia for state management.
Use TailwindCSS for styling.
Prefer composables over mixins.
Metadata Parsing
Rules can include frontmatter metadata that Conare extracts:
---
description: Enforce strict TypeScript conventions
alwaysApply: true
globs: "**/*.ts,**/*.tsx"
---
Your rule content here...
- description — Shows as subtitle in the rules panel
- alwaysApply — If
true, the rule is suggested for every project - globs — File patterns where this rule is most relevant
Cursor-style inline metadata is also supported:
description: My rule description
Always Apply: true
Rule content starts here...
Search and Filter
The rules panel includes a search bar that filters across:
- Rule name
- Description
- Full content
Useful when you have dozens of rules across multiple sources and need to find a specific one quickly.
Global vs Local
- Global rules (
~/.vibe-rules/) — Your personal coding preferences that apply everywhere - Local rules (project files) — Team conventions checked into the repo
When you load a local rule, it's automatically promoted to global storage too — ensuring it works with the vibe-rules CLI ecosystem outside Conare.
Cache
Rules are cached for 30 seconds to avoid hammering the filesystem on every panel interaction. The cache invalidates automatically on directory changes or manual refresh.