Quibbler Quibbler is a critic for your coding agent. It runs in the background and critiques your coding agent's actions, either via hooks or an MCP. When your coding agent is once again failing in the same ways, or ignoring your spec, instead of having to prompt it, the Quibbler agent will automatically observe and correct it. It will also learn rules from your usage, and then enforce them so you don't have to. Demo demo.mp4 What Quibbler Prevents We've found Quibbler useful in automatically preventing agents from: Fabricating results without running commands Not running tests or skipping verification steps Not following your coding style and patterns Hallucinating numbers, metrics, or functionality Creating new patterns instead of following existing ones Making changes that don't align with user intent Quibbler maintains context across reviews, learning your project's patterns and rules over time. Installation Using uv: uv tool install quibbler Using pip: pip install quibbler Choosing Your Mode Quibbler supports two integration modes: Hook Mode (For Claude Code users) Uses Claude Code's hook system for event-driven monitoring Passively observes all agent actions (tool use, prompts, etc.) Fire-and-forget feedback injection via file writes More powerful affordances but Claude Code-specific MCP Mode (For users of all other coding agents) Uses the Model Context Protocol for universal compatibility Agent calls review_code tool after making changes tool after making changes Synchronous review with immediate feedback Simple setup via MCP server configuration Setup Choose your mode and follow the appropriate setup instructions: Option A: MCP Mode Setup 1. Configure MCP Server Add Quibbler to your agent's MCP server configuration. For Cursor ( .cursor/mcp.json ): { "mcpServers" : { "quibbler" : { "command" : " quibbler mcp " , "env" : { "ANTHROPIC_API_KEY" : " your-api-key-here " } } } } For other MCP-compatible agents: Refer to your agent's documentation for MCP server configuration. 2. Add to AGENTS.md Create or update AGENTS.md in your project root to instruct your agent to use Quibbler: ## Code Review Process After making code changes, you MUST call the ` review_code ` tool from the Quibbler MCP server with: - ` user_instructions ` : The exact instructions the user gave you - ` agent_plan ` : ** A summary of the specific changes you made ** (include which files were modified, what was added/changed, and key implementation details) - ` project_path ` : The absolute path to this project Review Quibbler's feedback and address any issues or concerns raised. ### Example User asks: "Add logging to the API endpoints" After implementing, call: review_code( user_instructions="Add logging to the API endpoints", agent_plan="""Changes made: 1 . Added logger configuration in config/logging.py 2 . Updated routes/api.py to log incoming requests and responses 3 . Added request_id middleware for tracing 4 . Created logs/ directory with .gitignore""", project_path="/absolute/path/to/project" ) Option B: Hook Mode Setup 1. Start Quibbler Hook Server In a terminal, start the Quibbler hook server: export ANTHROPIC_API_KEY= " your-api-key-here " quibbler hook server # Or specify a custom port: quibbler hook server 8081 Keep this server running in the background. It will receive hook events from Claude Code. 2. Configure Hooks in Your Project In your project directory, run: quibbler hook add This creates or updates .claude/settings.json with the necessary hooks to forward events to the Quibbler server. 3. Verify Setup The .claude/settings.json should now contain hooks that: Forward tool use events to Quibbler ( quibbler hook forward ) ) Display Quibbler feedback to the agent ( quibbler hook notify ) When Claude Code runs in this project, Quibbler will automatically observe and intervene when needed. Configuration By default, Quibbler uses Claude Haiku 4.5 for speed. You can change this by creating or editing: Global config ( ~/.quibbler/config.json ): { "model" : " claude-sonnet-4-5 " } Project-specific config ( .quibbler/config.json in your project): { "model" : " claude-sonnet-4-5 " } Project-specific config takes precedence over global config. How It Works MCP Mode Your agent makes code changes, then calls the review_code tool with user instructions and a summary of changes made Quibbler maintains a persistent review agent per project that: Reviews the completed changes against user intent Uses Read tool to examine the actual changed files and existing patterns in your codebase Validates claims and checks for hallucinations Verifies proper testing and verification steps were included Quibbler returns feedback or approval synchronously Your agent addresses any issues found in the review Hook Mode Claude Code triggers hooks on events (tool use, prompt submission, etc.) Hook events are forwarded to the Quibbler HTTP server Quibbler maintains a persistent observer agent per session that: Passively watches all agent actions Builds understanding of what the agent is doing Intervenes when necessary by writing feedback to .quibbler/{session_id}.txt Feedback is automatically displayed to the agent via the notify hook The agent sees the feedback and can adjust its behavior Both modes build understanding over time, learning your project's patterns and saving rules to .quibbler/rules.md . Customizing Prompts You can customize Quibbler's system prompt by editing ~/.quibbler/prompt.md . The default prompt will be created on first run. Project-specific rules in .quibbler/rules.md are automatically loaded and added to the prompt. Note for Hook Mode: Quibbler writes feedback to a message file that is intended for the agent to read and act on (though users have oversight and can see it). Your agent's system prompt should include a {message_file} placeholder to tell Quibbler where to write its feedback. For example: When you need to provide feedback to the agent, write it to {message_file}. This is agent-to-agent communication intended for the coding agent to read and act on. Contributing If you notice an issue or bug, please open an issue. We welcome contributions - feel free to open a PR. Join our community on Discord to discuss workflows and share experiences. License See LICENSE for details.