HarnessLens is a small review tool for the vibe coding era.
Install HarnessLens from the Chrome Web Store Install HarnessLens for VS Code
Vibe coding pull requests often mix the harness that guides AI-assisted work with the tests that validate it and the code that ships it. Prompts, specs, agent instructions, PRDs, ADRs, CI, tests, and runtime source all land in the same GitHub diff. GitHub shows the diff, but it does not separate those files by review intent. HarnessLens adds that missing lens.
Review time gets wasted when every changed file looks like "just another file." In vibe coding workflows, the files around the code can matter as much as the code itself:
AGENTS.md, prompts, PRDs, specs, ADRs, and rules define intent.- Tests, fixtures, CI, and snapshots prove or protect behavior.
- Runtime source is where implementation changes land.
Those files deserve different review questions. HarnessLens makes the difference visible before you start reading line-by-line.
HarnessLens classifies changed files into three review lanes:
- Harness: product intent, specs, contracts, design notes, agent instructions, prompts, ADRs, and project operating rules.
- Validation: tests, fixtures, CI workflows, snapshots, and other verification assets.
- Code: runtime source and files that do not match Harness or Validation rules.
The goal is not to replace GitHub, Git, or VS Code. HarnessLens keeps native diffs and review tools in place, then adds category filters, file counts, and native diff navigation so reviewers can move through a pull request with more intent.
- Start with Harness files to understand why the change exists.
- Review Validation files separately from runtime implementation.
- Isolate Code files when you only need implementation changes.
- Jump from a category list to GitHub's native diff without losing review context.
- Keep using GitHub comments, file folding, viewed state, and review controls.
The Browser extension adds an unobtrusive panel to GitHub pull request changed files. It works with GitHub's native review page rather than replacing it.
The All tab gives you a compact review map: Harness, Validation, and Code files with counts and jump links.
Switch to Harness, Validation, or Code to focus the diff list on one kind of change.
- Browser extension: Harness / Validation / Code filtering and file navigation on GitHub pull request changed files.
- VS Code extension: a HarnessLens Explorer view for local Git working tree and staged changes.
- Shared Core package: the classification rules used by both extensions.
HarnessLens deliberately does not install Git hooks, parse commit-message trailers, infer causality, build relationship graphs, or send repository contents to a remote service.
The VS Code extension adds a HarnessLens Explorer view for local Git changes, including staged and unstaged files.
- Node.js 20 or newer.
- npm 10 or newer.
- Git.
- Chrome or Edge for Browser extension testing.
- VS Code 1.100 or newer for VS Code extension testing.
npm installnpm test
npm run typecheck
npm run buildExpected result:
- Core, Browser, and VS Code tests pass.
- TypeScript checks pass.
- Browser artifacts are written to
extensions/browser/dist. - VS Code artifacts are written to
extensions/vscode/dist. - Build verification prints
Build artifacts verified.
Install the published Browser extension from the Chrome Web Store:
https://chromewebstore.google.com/detail/harnesslens/ehakfggplcdihddknemnapfhmiacidjg
For local development testing:
npm run build:browserThen in Chrome:
- Open
chrome://extensions. - Enable Developer mode.
- Select Load unpacked.
- Choose
extensions/browser/dist.
Open a GitHub pull request and go to Files changed. HarnessLens appears above the native GitHub diff list with All / Harness / Validation / Code tabs.
On a GitHub pull request:
- Open Files changed.
- Use All to see every changed file grouped by category.
- Use Harness, Validation, or Code to isolate one category.
- Click a listed file path to jump to the native GitHub diff.
- Continue using native GitHub comments, review controls, and file folding.
HarnessLens may briefly wait for GitHub's progressive diff list to finish rendering. If GitHub changes its DOM, HarnessLens should degrade to a readable state rather than hiding GitHub's native UI.
Install the published VS Code extension from the Marketplace:
https://marketplace.visualstudio.com/items?itemName=harnesslens.harnesslens-vscode
For local development testing:
- Open this repository in VS Code.
- Run
npm run build. - Open Run and Debug.
- Start the HarnessLens Extension launch configuration.
- In the Extension Development Host, open a Git repository with local changes.
HarnessLens appears in Explorer. Selecting a file opens the native Git diff. Right-click a file for Open Diff or Open File.
In a Git repository with local changes:
- Open Explorer.
- Expand HarnessLens.
- Review the Harness, Validation, and Code groups.
- Select a file to open the native Git diff.
- Right-click a file for Open Diff or Open File.
- Use HarnessLens: Refresh Changed Files if you want an immediate manual refresh.
HarnessLens listens to VS Code Git repository lifecycle and Git state events so the tree updates when repositories open, close, or change.
HarnessLens currently uses built-in shared defaults.
Current examples classified as Harness:
AGENT.md,AGENTS.mdPRD.md,SPEC.md,CONTRACT.md,DESIGN.mdRULES.md,TASKS.md,TEST_PLAN.md.codex/**.cursor/rules/**.github/copilot-instructions.mddocs/adr/**docs/spec/**prompts/**harness/**
Files outside these built-in Harness patterns are not treated as Harness by
name alone. For example, PLAN.md currently falls back to Code unless it is
inside a Harness directory such as harness/** or another supported Harness
path.
Current examples classified as Validation:
.github/workflows/**tests/**__tests__/**fixtures/**test-fixtures/**snapshots/**__snapshots__/***.test.ts,*.test.tsx,*.spec.ts,*.spec.tsx*.snap
Everything else defaults to Code.
User-configurable classification is planned but not implemented in 0.1.0.
This is the next major product focus. Different vibe coding teams use different
planning files, prompt directories, agent rules, and validation layouts, so
HarnessLens should let each repository define its own Harness / Validation /
Code rules without changing extension code.
The intended design is a repo-level config file such as .harnesslens.yml
that overlays the built-in defaults:
harness:
include:
- "docs/decision-records/**"
- "ai/prompts/**"
exclude:
- "docs/spec/generated/**"
validation:
include:
- "quality/**"
code:
include:
- "tools/runtime/**"Planned semantics:
- Built-in defaults run first.
- Project config can add include and exclude patterns.
- Browser and VS Code consume the same shared Core config behavior.
- Config errors should be shown as readable diagnostics, not silent misclassification.
Until config support lands, update the shared Core classifier and tests when changing defaults.
Browser zip:
npm run package:browserThis writes dist/harnesslens-browser-0.1.0.zip.
VS Code VSIX:
npm run package:vscodeThis command uses @vscode/vsce through npx and writes
dist/harnesslens-vscode-0.1.0.vsix. It may download @vscode/vsce if it is
not already available.
Package both:
npm run packageRelease readiness check:
npm run release:checkUse PRE_RELEASE_MANUAL.md before publishing. It covers Browser and VS Code local installation, category checks, navigation, refresh, and regression cases.
Use RELEASE_CHECKLIST.md for packaging and release approval.
See PRIVACY.md. HarnessLens does not collect telemetry and does not send repository contents to a remote service.
See CONTRIBUTING.md for local setup, test expectations, and the current MVP boundaries. See SECURITY.md for vulnerability reporting.
HarnessLens is released under the MIT License.
See CHANGELOG.md.
Near-term before public release:
- Produce
0.1.0Browser zip and VS Code VSIX artifacts. - Complete manual Browser and VS Code smoke tests.
- Add screenshots or short demo media for the repository and extension pages.
- Decide whether Browser release starts as GitHub Release only or Chrome Web Store submission.
Planned after 0.1.0:
- Shared configurable classification rules.
- Browser diagnostics for unsupported GitHub DOM layouts.
- Optional richer VS Code commands such as copy relative path.
- Packaged marketplace release flow for VS Code.
- Browser store release flow and store listing assets.
Out of scope for this MVP:
- Git hooks.
- Commit trailer protocols.
- Causality inference.
- Relationship graphs.



