Use it at the exact level you need
Review one risky method or an entire file. No need to wait for a full PR cycle to get useful feedback.
VS Code / Cursor extension
Review a snippet, file, or git diff inside VS Code and Cursor. MergeCore spots risky pack-specific mistakes, weak AI-generated code, and messy logic — then helps you fix it before review begins.
The workflow
Run MergeCore on a snippet, file, staged diff, or working tree. Get actionable findings, severity scores, pack-aware feedback, and rewrites you can apply immediately.
MergeCore: Review Selection · Review Active File · Review Git Diff · Review Staged DiffIt is built for the moment confidence drops: after the code works, before someone else has to review the mess.
Why it helps
MergeCore reads project signals and applies versioned rules packs, so feedback feels closer to a sharp engineer than a generic AI lint pass.
Review one risky method or an entire file. No need to wait for a full PR cycle to get useful feedback.
Findings appear inside the editor, so you can fix problems while context is still fresh.
Catch weak assumptions, rough edges, and AI sludge before someone else has to point it out.
Not vague complaints. Real findings, code examples, and practical rewrites.
Accept patches directly in-editor or export a markdown review for your team.
Pack first. Add language, framework, testing, frontend, backend, mobile, and domain-specific rules without changing the review workflow.
Shipping today from the repo: language, framework, testing, frontend, backend, mobile, and systems packs. Planned next: more community packs, domain packs, and stronger pack resolution.
How Packs Work
MergeCore packs are made of a few clear files with different jobs: one says what the pack is, one defines the rules and scoring, one gives human shorthand for common problems, and one explains how an AI reviewer should apply the pack in practice.
Manifest & wiring
The pack manifest tells MergeCore what the pack is called, which version it is, which files it publishes, and how hosts should resolve the rest of the pack.
Rules & scoring
This is the scoring source of truth. It defines the rules, severities, penalties, and detection hints that shape how MergeCore judges a change.
Human-facing shorthand
The smell index translates deeper rules into named patterns people recognise quickly, which helps with triage, wording, and fix guidance.
How reviewers should think
Agent instructions explain tone, priorities, evidence rules, and how the reviewer should apply the pack instead of just dumping raw rule text.
Review modes · Personas
The same pack, the same rules, reviewed through a different lens. Personas tune emphasis, tone, and triage without ever inventing evidence or dropping the ground rules.
Balanced senior-style review across the active pack.
Architecture obsessed. Boundaries, invariants, long-term cost.
Ship fast, stay alive. Pragmatic over pristine.
Paranoid by trade. Treat every input as hostile.
Simplify aggressively. Delete more than you add.
Teaches juniors. Explains the why, not just the what.
Multi-level review buttons
Scope is how the code gets sent to the engine. A review level is what you want the engine to do with it — a quick sanity pass, a whole-file sweep, a flow across files, a proper PR review, or a broad disaster hunt.
Current function only. Fast, focused sanity check.
Current file end-to-end, as a cohesive unit.
Linked files plus the business process that runs through them.
Changed files with impact analysis across the diff.
Find everything wrong. Broad, unsparing sweep.
Strong inline comments
MergeCore rewrites its own output. Hedged openings, empty verdicts, and vague "refactor this" one-liners get caught by a defence-in-depth pass so every finding lands as a decision, not a suggestion.
Hedged opening
Consider maybe adding a null check here when the user is missing.
Guard against `user` being null before dereferencing `user.id`; otherwise this throws in the logged-out branch.
"Consider", "maybe", "might want to" — softeners that turn a call into a shrug — get stripped.
Empty verdict
This is a bit messy and could be cleaner.
Extract the three nested `try/catch` branches into `parsePayload()` so the happy path reads top-to-bottom.
"Needs work", "a bit messy", "could be better" describe a feeling, not a fix. They get replaced or dropped.
Targetless refactor
Refactor this.
Split `processOrder()` — the validation, pricing, and persistence steps each deserve their own function.
Bare "refactor this" names no target. Strong comments must say what to extract, split, rename, or remove.
Contextual memory
Before a review runs, MergeCore fingerprints the workspace: dependencies, test setup, TypeScript strictness, domain layout, and any conventions your team has declared. That profile is cached, auto-invalidated when it should be, and fed back into every review so feedback stays stack-aware.
package.json, composer.json, lockfiles, tsconfig — used to decide which packs apply and which ecosystem idioms to expect.
Detects patterns like Actions, Commands, Repositories, DTOs, typed requests, and service-over-helper style so findings match how your codebase is actually structured.
Spots the test runner, assertion style, and fixtures in use so reviews point at tests the same way your repo already writes them.
Team rules in .mergecore/conventions.json win on conflicts. Write them down once; every review respects them.
Profiles are cached per workspace with a short TTL and auto-invalidate the instant a lockfile, tsconfig, or conventions file changes — so the review that runs after composer require or npm install already knows about the new dependency.
What Breaks In Prod?
A pack-agnostic scanner dedicated to production-risk categories, not style. Built-in rules ship with the engine; packs contribute stack-specific rules as pure data, so adding coverage for a new framework never means shipping new scanner code.
Check-then-act, unsynchronised shared state, and concurrent writes that only fail under real traffic.
Non-idempotent work on retry paths — double charges, duplicate rows, and repeated side effects.
Multi-step writes with no atomic boundary, leaving the system in half-committed states when one step fails.
Infinite retries, no backoff, no dead-letter path — the reason a single bad job can drown the whole worker fleet.
Growing caches without bounds, listeners never torn down, closures that pin large objects for the life of the process.
Loops that fire one query per item. Fast in dev, fatal under real traffic. Number one cause of slow endpoints.
Queries on unindexed columns, sequential scans on tables that will grow, and joins without covering indexes.
Public endpoints with no throttle, outbound calls with no budget, cron paths that fan out unbounded.
Errors swallowed, logs with no correlation id, failures reported as info — the things that make incidents unsolvable at 3am.
Rules are data only: regex sources, language gates, and workspace-signal requirements. Malformed pack rules are dropped silently so one bad entry cannot break the scanner — built-ins remain authoritative.
Explain Why
A finding that says what is wrong but not why leaves the reader with nothing to internalise. MergeCore enforces a teaching bar: critical, error, and warning findings must carry a substantive why_it_matters, and hidden side effects get a dedicated callout so readers cannot miss them during review.
Shallow why
This is not best practice.
The handler returns before the write completes; under load the client will see stale reads from the replica until the next commit catches up, which is how we got yesterday's incident.
Restates the rule
Unspecified risk
This might cause issues.
Retrying the charge call on timeout without an idempotency key double-bills on the second attempt; Stripe keeps both charges and we have to refund manually.
No concrete cost named
Hidden side effect
This function silently swallows errors.
The bare catch block discards the DB error, so the caller sees success while the row was never written; the read-back a few lines down returns empty and the endpoint responds 200 with no data.
Hidden side effect
The enforcement runs on both the engine and the host, so even a weakly-worded response from the model gets surfaced in the sidebar as a "Hidden side effect" tag or a neutral reviewer note — never silently accepted.
Entry points
Use MergeCore on the part of the change that feels risky, messy, or just too AI-written to trust on the first pass.
Perfect for a risky block, fresh refactor, or the method that feels fine until you look twice.
Run a full pass when the whole file needs a proper sanity check, not just one highlighted section.
Check your in-progress branch before it turns into a pile of fixes, follow-ups, and reviewer comments.
Give the exact staged patch one last senior-style pass before you commit it or send it up for review.
Fits your setup
The extension is designed so you can get a feel for the workflow immediately, then connect it to your configured MergeCore API environment when you are ready for the full backend-driven path.
Give the branch one last senior pass before review starts, and catch the stuff that makes people lose confidence fast.
See It Catch Real Issues