difflens-cli 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,13 +5,13 @@ MCP server that gives AI coding agents "eyes" for UI work. It screenshots localh
5
5
  ## Quick Start
6
6
 
7
7
  ```bash
8
- npm install -g difflens
8
+ npm install -g difflens-cli
9
9
  cd your-project
10
10
  difflens setup
11
11
  # Restart Claude Code — DiffLens is now active
12
12
  ```
13
13
 
14
- Then ask Claude: *"take a snapshot of http://localhost:3000"*
14
+ DiffLens works automatically — just make UI requests as normal. Claude will snapshot before changes and verify after, without you having to ask.
15
15
 
16
16
  ### Use without installing
17
17
 
@@ -22,7 +22,7 @@ Add to your project's `.mcp.json`:
22
22
  "mcpServers": {
23
23
  "difflens": {
24
24
  "command": "npx",
25
- "args": ["-y", "difflens"]
25
+ "args": ["-y", "difflens-cli"]
26
26
  }
27
27
  }
28
28
  }
@@ -125,19 +125,39 @@ Delete old snapshots by age or count.
125
125
  | `maxCount` | number | — | Keep at most this many (newest first) |
126
126
  | `dryRun` | boolean | false | Preview without deleting |
127
127
 
128
- ## Example Workflow
128
+ ## Automatic Workflow
129
+
130
+ DiffLens includes a `CLAUDE.md` file and Claude Code hooks that make visual verification fully automatic. You don't need to mention DiffLens — Claude does it on its own:
129
131
 
130
132
  ```
131
- You: Take a snapshot of http://localhost:3000
132
- Agent: [calls snapshot] Saved baseline snapshot abc123
133
+ You: Move the login button to the right side of the header
134
+ Agent: [calls snapshot on localhost:3000 saves baseline]
135
+ [edits header CSS]
136
+ [calls check — compares before/after]
137
+
138
+ Done. Moved the login button to the right side of the header.
139
+ Visual check confirmed: only the button position changed,
140
+ no unintended layout shifts or regressions.
141
+ ```
142
+
143
+ If Claude detects unintended changes in the diff, it fixes them automatically and re-checks until the result is clean.
144
+
145
+ ### How it works under the hood
133
146
 
134
- ... you edit some CSS ...
147
+ 1. **CLAUDE.md** instructs Claude to always snapshot before UI edits and check after
148
+ 2. **Claude Code hooks** fire on every file edit — if the file is a UI file (.html, .css, .jsx, .tsx, .vue, .svelte, .scss), they remind Claude to snapshot/check
149
+ 3. Claude reads the diff report, fixes any regressions, and only responds once the visual output is verified
150
+
151
+ ### Manual usage
152
+
153
+ You can also use DiffLens explicitly:
154
+
155
+ ```
156
+ You: Take a snapshot of http://localhost:3000
157
+ Agent: [calls snapshot] Saved baseline abc123
135
158
 
136
159
  You: Check localhost:3000 for visual changes
137
- Agent: [calls check] SIGNIFICANT: 4.2% pixels changed.
138
- 2 changed region(s) detected:
139
- 1. Top-left area (400x60px) — header color change
140
- 2. Middle-center area (600x200px) — card layout shift
160
+ Agent: [calls check] 4.2% pixels changed — 2 regions detected
141
161
  [shows overlay image]
142
162
  ```
143
163
 
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
3
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
4
  import { z } from 'zod';
5
- import { readFile, writeFile } from 'node:fs/promises';
5
+ import { readFile, writeFile, mkdir, chmod } from 'node:fs/promises';
6
6
  import { join } from 'node:path';
7
7
  import { createRequire } from 'node:module';
8
8
  import { ensureStorageDirs, generateSnapshotId, saveSnapshot, loadSnapshotMetadata, loadSnapshotImage, findLatestSnapshot, listSnapshots, cleanupSnapshots, } from './storage.js';
@@ -26,12 +26,111 @@ Quick start:
26
26
  3. Ask Claude: "take a snapshot of http://localhost:3000"
27
27
 
28
28
  Or use without installing (add to .mcp.json):
29
- { "mcpServers": { "difflens": { "command": "npx", "args": ["-y", "difflens"] } } }
29
+ { "mcpServers": { "difflens": { "command": "npx", "args": ["-y", "difflens-cli"] } } }
30
30
  `;
31
31
  process.stdout.write(message);
32
32
  }
33
+ const CLAUDE_MD_CONTENT = `# DiffLens — Instructions for Claude Code
34
+
35
+ ## DiffLens Visual Verification (MANDATORY)
36
+
37
+ When this project has DiffLens MCP tools available, you MUST follow
38
+ this workflow for ANY change that affects visual UI (HTML, CSS, JSX,
39
+ TSX, Vue, Svelte, SCSS, Tailwind classes, component styling, layout
40
+ changes, or anything that would change how a page looks):
41
+
42
+ ### Before making changes:
43
+ 1. Ask the user what URL to check if you don't already know it
44
+ (e.g. http://localhost:3000)
45
+ 2. Call \`snapshot\` on that URL to save the current state as a baseline
46
+
47
+ ### After making changes:
48
+ 3. Call \`check\` on the same URL to compare against your snapshot
49
+ 4. Read the diff report carefully
50
+ 5. If there are ANY unintended changes (layout shifts, missing elements,
51
+ color changes, overlaps, broken responsive behavior), fix them
52
+ immediately
53
+ 6. Call \`check\` again to verify your fixes worked
54
+ 7. Only respond to the user once the diff report shows no unintended
55
+ changes
56
+
57
+ ### For responsive changes:
58
+ - Use \`check_responsive\` instead of \`check\` when the change involves
59
+ layout, flexbox, grid, media queries, or anything that could look
60
+ different on mobile vs desktop
61
+
62
+ ### Rules:
63
+ - NEVER skip the visual check. Even if you're confident the change is
64
+ correct, verify it.
65
+ - If the dev server is not running, tell the user to start it before
66
+ you proceed with UI changes.
67
+ - If the diff shows problems you can't fix after 3 attempts, show the
68
+ user the diff report and ask for guidance.
69
+ `;
70
+ const PRE_HOOK_CONTENT = `#!/bin/bash
71
+ # PreToolUse hook: remind Claude to snapshot before editing UI files
72
+ INPUT=$(cat)
73
+ FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
74
+
75
+ if [[ "$FILE_PATH" =~ \\.(html|css|jsx|tsx|vue|svelte|scss|sass|less)$ ]]; then
76
+ cat <<'HOOK_EOF'
77
+ {
78
+ "additionalContext": "[DiffLens] You are about to edit a UI file. BEFORE making this edit, ensure you have already called \`snapshot\` on the dev server URL to save a baseline. If you haven't taken a snapshot yet for this task, do it NOW before proceeding with the edit. If the user hasn't told you the dev server URL, ask them first."
79
+ }
80
+ HOOK_EOF
81
+ exit 0
82
+ fi
83
+
84
+ exit 0
85
+ `;
86
+ const POST_HOOK_CONTENT = `#!/bin/bash
87
+ # PostToolUse hook: remind Claude to run visual check after editing UI files
88
+ INPUT=$(cat)
89
+ FILE_PATH=$(echo "$INPUT" | jq -r '.tool_input.file_path // empty')
90
+
91
+ if [[ "$FILE_PATH" =~ \\.(html|css|jsx|tsx|vue|svelte|scss|sass|less)$ ]]; then
92
+ cat <<'HOOK_EOF'
93
+ {
94
+ "additionalContext": "[DiffLens] You just edited a UI file. Once you are done with ALL edits for this change, call \`check\` (or \`check_responsive\` for layout changes) on the dev server URL to verify there are no unintended visual regressions. Do NOT skip this step."
95
+ }
96
+ HOOK_EOF
97
+ exit 0
98
+ fi
99
+
100
+ exit 0
101
+ `;
102
+ const HOOKS_SETTINGS = {
103
+ hooks: {
104
+ PreToolUse: [
105
+ {
106
+ matcher: 'Edit|Write',
107
+ hooks: [
108
+ {
109
+ type: 'command',
110
+ command: '"$CLAUDE_PROJECT_DIR"/.claude/hooks/difflens-pre-edit.sh',
111
+ timeout: 5,
112
+ },
113
+ ],
114
+ },
115
+ ],
116
+ PostToolUse: [
117
+ {
118
+ matcher: 'Edit|Write',
119
+ hooks: [
120
+ {
121
+ type: 'command',
122
+ command: '"$CLAUDE_PROJECT_DIR"/.claude/hooks/difflens-post-edit.sh',
123
+ timeout: 5,
124
+ },
125
+ ],
126
+ },
127
+ ],
128
+ },
129
+ };
33
130
  async function setupCommand() {
34
- const mcpPath = join(process.cwd(), '.mcp.json');
131
+ const cwd = process.cwd();
132
+ // 1. Write/merge .mcp.json
133
+ const mcpPath = join(cwd, '.mcp.json');
35
134
  let config = {};
36
135
  try {
37
136
  const existing = await readFile(mcpPath, 'utf-8');
@@ -51,8 +150,65 @@ async function setupCommand() {
51
150
  args: [],
52
151
  };
53
152
  await writeFile(mcpPath, JSON.stringify(config, null, 2) + '\n');
54
- process.stdout.write(`✓ Added DiffLens to ${mcpPath}\n`);
55
- process.stdout.write(` Restart Claude Code to pick up the new MCP server.\n`);
153
+ process.stdout.write(` ✓ Added DiffLens MCP server to ${mcpPath}\n`);
154
+ // 2. Write CLAUDE.md (append if exists, create if not)
155
+ const claudeMdPath = join(cwd, 'CLAUDE.md');
156
+ try {
157
+ const existing = await readFile(claudeMdPath, 'utf-8');
158
+ if (!existing.includes('DiffLens Visual Verification')) {
159
+ await writeFile(claudeMdPath, existing + '\n' + CLAUDE_MD_CONTENT);
160
+ process.stdout.write(` ✓ Appended DiffLens instructions to CLAUDE.md\n`);
161
+ }
162
+ else {
163
+ process.stdout.write(` ✓ CLAUDE.md already has DiffLens instructions\n`);
164
+ }
165
+ }
166
+ catch {
167
+ await writeFile(claudeMdPath, CLAUDE_MD_CONTENT);
168
+ process.stdout.write(` ✓ Created CLAUDE.md with DiffLens instructions\n`);
169
+ }
170
+ // 3. Write hook scripts
171
+ const hooksDir = join(cwd, '.claude', 'hooks');
172
+ await mkdir(hooksDir, { recursive: true });
173
+ const preHookPath = join(hooksDir, 'difflens-pre-edit.sh');
174
+ const postHookPath = join(hooksDir, 'difflens-post-edit.sh');
175
+ await writeFile(preHookPath, PRE_HOOK_CONTENT);
176
+ await chmod(preHookPath, 0o755);
177
+ await writeFile(postHookPath, POST_HOOK_CONTENT);
178
+ await chmod(postHookPath, 0o755);
179
+ process.stdout.write(` ✓ Installed Claude Code hooks in .claude/hooks/\n`);
180
+ // 4. Write/merge .claude/settings.json with hooks config
181
+ const settingsPath = join(cwd, '.claude', 'settings.json');
182
+ let settings = {};
183
+ try {
184
+ const existing = await readFile(settingsPath, 'utf-8');
185
+ const parsed = JSON.parse(existing);
186
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
187
+ settings = parsed;
188
+ }
189
+ }
190
+ catch {
191
+ // File doesn't exist — start fresh
192
+ }
193
+ // Merge hooks config
194
+ const existingHooks = (settings.hooks || {});
195
+ const newHooks = HOOKS_SETTINGS.hooks;
196
+ for (const [event, matchers] of Object.entries(newHooks)) {
197
+ if (!existingHooks[event]) {
198
+ existingHooks[event] = [];
199
+ }
200
+ // Only add if not already present
201
+ const existing = JSON.stringify(existingHooks[event]);
202
+ for (const matcher of matchers) {
203
+ if (!existing.includes('difflens-pre-edit') && !existing.includes('difflens-post-edit')) {
204
+ existingHooks[event].push(matcher);
205
+ }
206
+ }
207
+ }
208
+ settings.hooks = existingHooks;
209
+ await writeFile(settingsPath, JSON.stringify(settings, null, 2) + '\n');
210
+ process.stdout.write(` ✓ Added hooks to .claude/settings.json\n`);
211
+ process.stdout.write(`\n Restart Claude Code to activate DiffLens.\n`);
56
212
  }
57
213
  // --- CLI dispatch ---
58
214
  const subcommand = process.argv[2];
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env node
2
+ import { execSync } from 'node:child_process';
3
+ import { createRequire } from 'node:module';
4
+ const require = createRequire(import.meta.url);
5
+ const pkg = require('../package.json');
6
+ // ANSI helpers
7
+ const dim = (s) => `\x1b[2m${s}\x1b[0m`;
8
+ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
9
+ const cyan = (s) => `\x1b[36m${s}\x1b[0m`;
10
+ const green = (s) => `\x1b[32m${s}\x1b[0m`;
11
+ const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
12
+ // Install Chromium
13
+ try {
14
+ execSync('npx playwright install chromium', { stdio: 'inherit' });
15
+ }
16
+ catch {
17
+ console.error('\n Failed to install Chromium. Run manually: npx playwright install chromium\n');
18
+ process.exit(1);
19
+ }
20
+ // Welcome message
21
+ const message = `
22
+ ${dim('┌─────────────────────────────────────────────┐')}
23
+ ${dim('│')} ${dim('│')}
24
+ ${dim('│')} ${cyan('◆')} ${bold('DiffLens')} ${dim(`v${pkg.version}`)} ${dim('│')}
25
+ ${dim('│')} ${dim('Visual diff MCP server for AI agents')} ${dim('│')}
26
+ ${dim('│')} ${dim('│')}
27
+ ${dim('└─────────────────────────────────────────────┘')}
28
+
29
+ ${bold('Get started:')}
30
+
31
+ ${green('1.')} cd into your project directory
32
+ ${green('2.')} Run ${cyan('difflens setup')}
33
+ ${green('3.')} Restart Claude Code
34
+ ${green('4.')} Make any UI change — Claude snapshots and verifies automatically
35
+
36
+ ${bold('What happens:')}
37
+
38
+ You say ${dim('"move the button to the right"')} and Claude will:
39
+ ${dim('→')} snapshot the page ${dim('→')} make the edit ${dim('→')} check the diff ${dim('→')} fix regressions
40
+
41
+ ${bold('Or add to .mcp.json manually:')}
42
+
43
+ ${dim('{')} "mcpServers": ${dim('{')} "difflens": ${dim('{')}
44
+ "command": "npx", "args": ["-y", "difflens-cli"]
45
+ ${dim('} } }')}
46
+
47
+ ${bold('Tools available to Claude:')}
48
+
49
+ ${yellow('snapshot')} Screenshot a page as a baseline
50
+ ${yellow('check')} Diff current page against baseline
51
+ ${yellow('check_responsive')} Diff at multiple viewport widths
52
+ ${yellow('snapshot_element')} Screenshot a specific DOM element
53
+ ${yellow('list_snapshots')} List stored snapshots
54
+ ${yellow('cleanup')} Delete old snapshots
55
+
56
+ ${dim('GitHub: https://github.com/byzkhan/difflens')}
57
+ `;
58
+ console.log(message);
59
+ //# sourceMappingURL=postinstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postinstall.js","sourceRoot":"","sources":["../src/postinstall.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,eAAe;AACf,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAChD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AACjD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AAClD,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACnD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AAEpD,mBAAmB;AACnB,IAAI,CAAC;IACH,QAAQ,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AACpE,CAAC;AAAC,MAAM,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,kBAAkB;AAClB,MAAM,OAAO,GAAG;IACZ,GAAG,CAAC,iDAAiD,CAAC;IACtD,GAAG,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,GAAG,CAAC;IAChE,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,2BAA2B,GAAG,CAAC,GAAG,CAAC;IACxG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,sCAAsC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC;IAC1E,GAAG,CAAC,GAAG,CAAC,gDAAgD,GAAG,CAAC,GAAG,CAAC;IAChE,GAAG,CAAC,iDAAiD,CAAC;;IAEtD,IAAI,CAAC,cAAc,CAAC;;MAElB,KAAK,CAAC,IAAI,CAAC;MACX,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,gBAAgB,CAAC;MACzC,KAAK,CAAC,IAAI,CAAC;MACX,KAAK,CAAC,IAAI,CAAC;;IAEb,IAAI,CAAC,eAAe,CAAC;;cAEX,GAAG,CAAC,gCAAgC,CAAC;MAC7C,GAAG,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC;;IAE7F,IAAI,CAAC,+BAA+B,CAAC;;MAEnC,GAAG,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC;;MAE1D,GAAG,CAAC,OAAO,CAAC;;IAEd,IAAI,CAAC,4BAA4B,CAAC;;MAEhC,MAAM,CAAC,UAAU,CAAC;MAClB,MAAM,CAAC,OAAO,CAAC;MACf,MAAM,CAAC,kBAAkB,CAAC;MAC1B,MAAM,CAAC,kBAAkB,CAAC;MAC1B,MAAM,CAAC,gBAAgB,CAAC;MACxB,MAAM,CAAC,SAAS,CAAC;;IAEnB,GAAG,CAAC,6CAA6C,CAAC;CACrD,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "difflens-cli",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "MCP server that gives AI coding agents visual diff capabilities for UI work",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,7 +13,7 @@
13
13
  "build": "tsc",
14
14
  "dev": "tsc --watch",
15
15
  "start": "node dist/index.js",
16
- "postinstall": "npx playwright install chromium",
16
+ "postinstall": "node dist/postinstall.js",
17
17
  "prepublishOnly": "npm run build"
18
18
  },
19
19
  "keywords": [