Extracts decision intent from git history and protects intentional code from AI modification.
Model Context Protocol (MCP) Server: io.github.Sandip124/wisegit
This MCP server, io.github.Sandip124/wisegit, is described as a local server that “extracts decision intent from git history” and “protects intentional code from AI modification.” Its readme excerpt emphasizes preserving intentional code changes rather than letting AI alter them without context.
🛠️ Key Features
Extracts decision intent from git history
Protects intentional code from AI modification
MIT-licensed package (per readme badge)
🚀 Use Cases
Use when you want AI-assisted changes to respect prior intent recorded in git history
Prevent AI from modifying code segments considered intentional
⚡ Developer Benefits
Decision context can be sourced from git history
Adds a protection mechanism to reduce unintended AI edits
⚠️ Limitations
Source excerpt does not provide additional details on supported workflows, integrations, or tooling beyond the described behavior
"Don't take a fence down until you know the reason it was put up."
— G.K. Chesterton
wisegit is a local MCP server that extracts decision intent from git history and protects intentional code from AI modification.
When Claude Code (or any MCP-compatible agent) is about to edit a file, wisegit injects a decision manifest showing which functions are frozen, stable, or open — so the AI respects what was intentional, not just what compiles.
Zero config. Zero external services. Everything local.
Install
bash
# Set up any repo (one command)
npx @sandip124/wisegit setup
# Or add as MCP server globally
claude mcp add wisegit -- npx @sandip124/wisegit serve
FROZEN (score >= 0.80): Do not modify without explicit user approval
STABLE (score 0.50-0.79): Proceed with caution, review intent first
OPEN (score < 0.50): Safe to modify freely
Quick Start
Prerequisites
Node.js >= 20
That's it. No Docker, no PostgreSQL, no external services.
1. Set Up a Repository (one command)
bash
cd /path/to/your/repo
npx @sandip124/wisegit setup
This single command:
Creates a local SQLite database at ~/.wisegit/wisegit.db
Indexes your entire git history (462 commits in ~13 seconds)
Creates .mcp.json for Claude Code auto-discovery
Creates CLAUDE.md rules that instruct AI to check before editing
Adds .mcp.json to .gitignore
2. Enrich with Issue Context (optional)
bash
# Fetch issue/PR details from GitHub/GitLab
GITHUB_TOKEN=ghp_... npx @sandip124/wisegit enrich
This fetches referenced issues (e.g., #134 in commit messages), detects Won't Fix / By Design decisions, and boosts freeze scores for functions linked to those issues.
3. Done
Open the repo in Claude Code. It will automatically:
Start the wisegit MCP server (via .mcp.json)
Read the protection rules (via CLAUDE.md)
Call get_file_decisions before editing any file
MCP Tools
Tool
Description
get_file_decisions
Decision manifest for a file — freeze scores, intent history, recovery levels, override status
get_freeze_score
Score + signal breakdown for a specific function
get_function_history
Full chronological decision timeline for a function
get_theory_gaps
Functions with unrecoverable rationale (inactive authors, timeline gaps)
get_branch_context
Branch merge history — what was migrated and why
search_decisions
Search past decisions by keyword across the entire repo
create_override
Override a frozen function (user approves in Claude Code UI)
extract_intent
Extract intent for NOISE commits using the host LLM — no Ollama needed
find_similar_functions
Search for existing functions that solve a similar problem before writing new code
predict_impact
Predict what functions will break if a given function is modified
get_codebase_conventions
Extract coding conventions for a file's neighborhood
MCP Resource:wisegit://manifest/{filePath} — decision manifest as auto-discoverable resource
MCP Prompt:check_before_edit — mandatory workflow prompt that returns the decision manifest before editing any file
LLM Intent Extraction Strategy
wisegit uses a smart fallback chain for extracting intent from NOISE commits:
Context
LLM Used
How
Inside Claude Code
Host LLM (Claude)
MCP sampling — asks Claude to analyze the diff. Zero setup.
CLI with Ollama
Ollama (llama3)
wisegit init --ollama — uses local Ollama instance
CLI without Ollama
None
Rule-based extraction only, NOISE commits get no intent
Inside Claude Code, call extract_intent to retroactively recover intent for NOISE commits — uses Claude itself, no Ollama installation needed.
CLI Commands
bash
wisegit setup [--path <dir>] [--global] # One-command repo setup
wisegit init [--full-history] [--path <dir>] # Index git history
wisegit enrich [--path <dir>] # Fetch issue/PR context from GitHub/GitLab
wisegit audit <file> # Show decision manifest
wisegit history <target> [--file <path>] # Show decision timeline
wisegit recompute [--path <dir>] # Recompute scores with PageRank + theory gaps
wisegit override <fn> --file <f> --reason "..."# Override a frozen function
wisegit overrides # List active overrides
wisegit sync# Rebuild local cache from git + .wisegit/
wisegit config list # View team configuration
wisegit config set <key> <value> # Modify team policy
wisegit team-status # Team overview: enrichments, overrides, contributors
wisegit team-health # Theory health: healthy/fragile/critical functions
wisegit branch-capture # Capture branch context from last merge
wisegit branch-list # List all captured branch snapshots
wisegit branch-recover <sha> # Recover context from old merge commit
wisegit calibrate # Show adaptive obsolescence weights vs defaults
wisegit report [--output <file>] # Generate HTML report with scores + insights
wisegit serve # Start MCP server (stdio)
wisegit hook install|uninstall # Manage git hooks (post-commit + post-merge)
Configure for Claude Code
Option A: Per-repo (recommended)
Run npx @sandip124/wisegit setup in any repo. It creates .mcp.json automatically.
Option B: Global registration
bash
claude mcp add wisegit -- npx @sandip124/wisegit serve
More languages can be added via Tree-sitter grammar configs in src/ast/languages/.
Issue Enrichment
A commit saying fix: handle null token #134 points to an issue containing reproduction steps, root cause, and explicit decision rationale — everything the commit message never says.
bash
# Fetch issue context from GitHub/GitLab
wisegit enrich --path /path/to/repo
# With auth (5000 req/hr instead of 60)
GITHUB_TOKEN=ghp_... wisegit enrich
Dead code, stale subgraph, migration leftover, obsolete deps, superseded, SAAD, change burst absence, co-change divergence
Freeze score formula:
code
freeze_score = base_score x (1 - obsolescence_penalty)
Protection signals produce the base score (weighted average of present signal categories, not additive sum); obsolescence signals produce the penalty.
Obsolescence weights are adaptive — calibrated per-repository using Shannon entropy
and Bayesian feedback. Falls back to hardcoded defaults when < 20 functions have signals.
Age signal uses Weibull survival model [18] (k=0.7, lambda=2.4y); contributor expertise uses DOE model [19] (4 variables: contribution share, recency, duration, frequency).
Academic grounding: 24 published papers. See REFERENCE.md for full citations.
Cross-Repo Validation
Tested on 3 real-world open-source codebases:
Repo
Commits
Functions
FROZEN
STABLE
Max Score
pallets/flask
5,565
4,355
72
2,272
0.927
expressjs/express
6,382
409
1
247
0.811
zeeguu/api
4,515
3,216
1
12
0.583
Flask's core APIs (__init__, run, wsgi_app, url_for) correctly scored FROZEN (0.87+). Express routing primitives (paramCallback, Route, Router) correctly scored FROZEN/STABLE. Scores adapt to each codebase's history rather than producing uniform distributions.
See REFERENCE.md for detailed validation findings and implementation changes.
Legacy Codebase Evolution
wisegit is designed for codebases that have accumulated years of intentional decisions. The freeze score doesn't mean "never change this" — it means "understand these decisions before you change it."
Progressive migration, not shiny rewrites. Per Távora [12]: the business rules in messy code are correct and valuable. The technical debt is in the structure, not the decisions. wisegit protects the decisions while you fix the structure.
Stage
How wisegit helps
Understand AS-IS
wisegit audit shows what's intentional. wisegit team-health shows where institutional knowledge is lost.
Protect during refactoring
Manifests tell developers + AI which behaviors were deliberately chosen
Record rationale
Override reasons persist in .wisegit/overrides.jsonl — not buried in Slack
Preserve migration context
Branch snapshots record what was replaced and what should never return
Track cross-boundary deps
Co-change signals detect coupling between legacy and replacement code
See REFERENCE.md for the full legacy evolution section with academic grounding (24 published papers).
Team Support
wisegit uses a three-layer architecture — no separate "team mode" needed: