Skip to main content

Personalize AI coding assistants by analyzing conversation history

Project description

vardoger

A cross-platform plugin for AI coding assistants (Cursor, Claude Code, OpenAI Codex, OpenClaw, GitHub Copilot CLI, Windsurf, Cline) that reads your conversation history, extracts behavioral patterns, and generates personalized system prompt additions — making the assistant progressively better suited to how you work.

All processing happens locally. No data ever leaves your machine.

Prerequisites

Python 3.11+

Platform Command
macOS brew install python@3.13 (install Homebrew) or python.org/downloads/macos
Debian / Ubuntu sudo apt install python3
Fedora sudo dnf install python3
Windows winget install Python.Python.3.13 or python.org/downloads/windows

pipx

Recommended for installing vardoger as an isolated CLI tool. Full instructions at pipx.pypa.io/stable/installation.

Platform Command
macOS brew install pipx && pipx ensurepath
Debian / Ubuntu sudo apt install pipx && pipx ensurepath
Fedora sudo dnf install pipx && pipx ensurepath
Windows scoop install pipx or pip install --user pipx && pipx ensurepath

Quick Start

pipx install vardoger
vardoger setup cursor        # or claude-code, codex, openclaw, copilot, windsurf, cline

Then tell your assistant: "Personalize my assistant."

Looking for the in-app plugin listings? Track review status for each marketplace (PyPI, Cursor, Claude Code, Codex, Copilot CLI, Windsurf, Cline, ClawHub) in MARKETPLACE_STATUS.md.

Previous pre-releases. pipx install vardoger now resolves to the stable 0.2.x line. The beta install paths below stay here for anyone still pinning an earlier release; new installs should not need them.

# opt into future pre-releases (0.2.0bN, etc.):
pipx install --pip-args="--pre" vardoger
# or pin an older pre-release:
pipx install vardoger==0.1.0b3
# or run without installing:
uvx vardoger --help

CLI Commands

Command Purpose
vardoger setup <platform> Register vardoger with a platform (cursor, claude-code, codex, openclaw, copilot, windsurf, cline).
vardoger status [--platform X] [--json] Report whether each personalization is fresh or stale.
vardoger prepare --platform X [--batch N] [--synthesize] Produce the batched prompts used by the AI-driven skill pipeline.
vardoger write --platform X Read synthesized personalization from stdin and write it to the platform's rules file (supports YAML-frontmatter confidence metadata).
vardoger feedback accept|reject --platform X [--reason TEXT] Record whether you kept or rejected the last generation. reject auto-reverts to the prior generation.
vardoger compare --platform X | --all [--window DAYS] [--json] Compare heuristic conversation-quality metrics before vs. after the latest personalization.

How It Works

  1. Read — Parses conversation history already stored on disk by each platform
  2. Analyze — The host AI model identifies patterns in your communication style, tech stack, workflow, and preferences
  3. Generate — Produces a system prompt addition tailored to you
  4. Deliver — Writes the addition to the platform's native config (.cursor/rules/, .claude/rules/, AGENTS.md, etc.)

Supported Platforms

Platform History Source Prompt Delivery Integration
Cursor Agent transcript JSONL .cursor/rules/vardoger.md MCP server
Claude Code Session JSONL .claude/rules/vardoger.md Plugin with skill
OpenAI Codex Session rollout JSONL ~/.codex/AGENTS.md Plugin with skill
OpenClaw Session JSONL ~/.openclaw/skills/vardoger-personalization/SKILL.md Skill
GitHub Copilot CLI ~/.copilot/session-state/*.jsonl ~/.copilot/copilot-instructions.md (global) or <project>/.github/copilot-instructions.md (project) — managed inside a <!-- vardoger:start --> fenced section CLI-only
Windsurf ~/.codeium/windsurf/**/*.jsonl ~/.codeium/windsurf/memories/global_rules.md (global, fenced section) or <project>/.windsurf/rules/vardoger.md (project, dedicated file) CLI-only
Cline VS Code globalStorage/.../tasks/*/api_conversation_history.json <project>/.clinerules/vardoger.md if .clinerules is a directory, otherwise a fenced section in <project>/.clinerules (project-only) CLI-only

Development

Requires uv (Python package manager):

git clone https://github.com/dstrupl/vardoger.git
cd vardoger
uv sync
.venv/bin/vardoger --help

Project Layout

src/vardoger/          # shared core — history reading, analysis, prompt generation
plugins/_shared/       # shared analysis/personalization skill authored once
plugins/cursor/        # Cursor MCP server config, install script
plugins/claude-code/   # Claude Code plugin manifest, skills
plugins/codex/         # Codex plugin manifest, skills
plugins/openclaw/      # OpenClaw skill
plugins/copilot/       # GitHub Copilot CLI plugin manifest, skills
plugins/windsurf/      # Windsurf install snippet and rules delivery
plugins/cline/         # Cline MCP-marketplace manifest + llms-install guide
tests/                 # all tests, mirroring src/ structure
  • Platform-agnostic logic lives under src/vardoger/.
  • Platform-specific integration (manifests, skills, install scripts) lives under plugins/<platform>/.
  • Tests live in tests/, mirroring the source tree.

See AGENTS.md for full coding standards and quality checks.

Quality gates

CI enforces a combined quality bar on every push and pull request:

  • ruff check / ruff format --check — lint (incl. complexity, pylint, return, pathlib, tryceratops rules) and formatting.
  • mypy src/ — strict type checking.
  • pytest --cov=vardoger --cov-fail-under=80 — tests across Python 3.11–3.13 with a combined 80% coverage floor.
  • A parallel security job runs bandit -r src/ and pip-audit --skip-editable to catch common code smells and dependency CVEs.

Run the full bundle locally before pushing:

uv run ruff check . && uv run ruff format --check . && uv run mypy src/ && uv run pytest --cov=vardoger --cov-fail-under=80

Contributing

Contributions are welcome. Short version:

  1. Fork dstrupl/vardoger on GitHub and clone your fork.
  2. uv sync and create a topic branch.
  3. Make your changes with tests and run the quality-gate one-liner above.
  4. Push to your fork and open a PR against main.

CI (test on Python 3.11/3.12/3.13 plus a security job) will run automatically on the PR. First-time contributors may need a maintainer to click Approve and run before the first workflow execution.

See CONTRIBUTING.md for the full walkthrough and AGENTS.md for coding standards and commit-message conventions.

Releasing to PyPI

CI runs automatically on every push and PR (lint, type check, tests across Python 3.11–3.13). To publish a new version:

  1. Bump version in pyproject.toml
  2. Commit and push to main
  3. Go to Releases > Create a new release
  4. Create a new tag matching the version (e.g. v0.1.0), add a title and description
  5. Click Publish release

The publish.yml workflow builds the package and uploads it to PyPI via trusted publishers (no API tokens needed). Once complete, pipx install vardoger will pull the new version.

Status

Public beta. The 0.2.x line is published on PyPI and actively maintained; marketplace listings are rolling out per MARKETPLACE_STATUS.md. See PRD.md for the full product requirements document.

Privacy and security

  • PRIVACY.md — what vardoger reads, writes, and (importantly) does not send anywhere.
  • SECURITY.md — how to report a vulnerability privately.

License

Licensed under the Apache License, Version 2.0.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vardoger-0.3.0.tar.gz (129.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vardoger-0.3.0-py3-none-any.whl (81.4 kB view details)

Uploaded Python 3

File details

Details for the file vardoger-0.3.0.tar.gz.

File metadata

  • Download URL: vardoger-0.3.0.tar.gz
  • Upload date:
  • Size: 129.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vardoger-0.3.0.tar.gz
Algorithm Hash digest
SHA256 e2ad80b8dced084414df5918ae05acb9e86d88cbbb9116368f787a0f539cdc54
MD5 02159523283d2c98676ff3ee770ae515
BLAKE2b-256 32b1dfbfa61de514c18112ff41805ee98e354c9cf7af91b3133ac444e873777e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vardoger-0.3.0.tar.gz:

Publisher: publish.yml on dstrupl/vardoger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vardoger-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: vardoger-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 81.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vardoger-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c9c485691505996d7e1bfe4bac2b30ef1fa48f54318e529ebdd3119fa56983fc
MD5 e5718d000f5d0203e53c4439288554e5
BLAKE2b-256 afcc42e98ea77f1dfdb04cef9cb9176a95cfff1884ff06097ed20e1b95cd6355

See more details on using hashes here.

Provenance

The following attestation bundles were made for vardoger-0.3.0-py3-none-any.whl:

Publisher: publish.yml on dstrupl/vardoger

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page