chromeflow 0.1.11 → 0.1.13
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 +87 -0
- package/dist/index.js +1 -1
- package/dist/tools/browser.js +4 -3
- package/package.json +4 -3
package/README.md
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Chromeflow
|
|
2
|
+
|
|
3
|
+
Browser guidance for Claude Code. When Claude needs you to set up Stripe, grab API keys, configure a third-party service, or do anything in a browser — Chromeflow takes over. It highlights what to click, fills in fields it knows, clicks buttons automatically, and writes captured values straight to your `.env`.
|
|
4
|
+
|
|
5
|
+
## How it works
|
|
6
|
+
|
|
7
|
+
Chromeflow is two things that work together:
|
|
8
|
+
|
|
9
|
+
- **MCP server** — gives Claude Code a set of browser tools (`open_page`, `click_element`, `fill_input`, `read_element`, `write_to_env`, etc.)
|
|
10
|
+
- **Chrome extension** — receives those commands and acts on the active tab (highlights, clicks, fills, captures screenshots)
|
|
11
|
+
|
|
12
|
+
Claude drives the flow. You only touch the browser for things that genuinely need you — login, passwords, payment details, personal choices.
|
|
13
|
+
|
|
14
|
+
## Setup
|
|
15
|
+
|
|
16
|
+
**1. Run the setup wizard** from your project directory:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx chromeflow setup
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
This registers the MCP server in `~/.claude.json` and writes a `CLAUDE.md` into your project so Claude knows when and how to use Chromeflow.
|
|
23
|
+
|
|
24
|
+
**2. Load the Chrome extension** (one time):
|
|
25
|
+
|
|
26
|
+
The setup wizard opens `chrome://extensions` for you. Then:
|
|
27
|
+
1. Enable **Developer mode** (top-right toggle)
|
|
28
|
+
2. Click **Load unpacked**
|
|
29
|
+
3. Select the path printed by the setup wizard
|
|
30
|
+
|
|
31
|
+
The extension persists across Chrome restarts. You only do this once.
|
|
32
|
+
|
|
33
|
+
**3. Restart Claude Code.**
|
|
34
|
+
|
|
35
|
+
That's it. Claude will automatically reach for Chromeflow whenever a task needs browser interaction.
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
Just ask Claude normally:
|
|
40
|
+
|
|
41
|
+
> "Set up Stripe for this project — create a product with monthly and annual pricing, capture the price IDs into .env"
|
|
42
|
+
|
|
43
|
+
> "Go to Supabase and get my project's anon key and service role key"
|
|
44
|
+
|
|
45
|
+
> "Help me configure SendGrid webhooks for this app"
|
|
46
|
+
|
|
47
|
+
Claude will navigate, highlight steps, click what it can, pause for anything sensitive, and write values to your `.env` automatically.
|
|
48
|
+
|
|
49
|
+
## Adding to another project
|
|
50
|
+
|
|
51
|
+
Run the setup wizard from the new project's directory:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
npx chromeflow setup
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
The MCP server is already registered globally — this just adds `CLAUDE.md` to the project.
|
|
58
|
+
|
|
59
|
+
## Development
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
git clone https://github.com/NeoDrew/chromeflow
|
|
63
|
+
cd chromeflow
|
|
64
|
+
npm install
|
|
65
|
+
npm run build
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Then run setup using the local build:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
node packages/mcp-server/dist/index.js setup
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
To rebuild on changes:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm run dev:mcp # watches mcp-server
|
|
78
|
+
npm run dev:ext # watches extension
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
After rebuilding the extension, click **Update** on `chrome://extensions`.
|
|
82
|
+
|
|
83
|
+
## Requirements
|
|
84
|
+
|
|
85
|
+
- Claude Code
|
|
86
|
+
- Chrome (or any Chromium browser)
|
|
87
|
+
- Node.js 22+
|
package/dist/index.js
CHANGED
package/dist/tools/browser.js
CHANGED
|
@@ -60,9 +60,10 @@ After calling this, use those exact coordinates in highlight_region \u2014 do NO
|
|
|
60
60
|
if (els.length === 0) {
|
|
61
61
|
return { content: [{ type: "text", text: "No visible interactive elements found on page." }] };
|
|
62
62
|
}
|
|
63
|
-
const lines = els.map(
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
const lines = els.map((e) => {
|
|
64
|
+
const val = e.value ? ` [currently: "${e.value}"]` : "";
|
|
65
|
+
return `${e.index}. ${e.type} "${e.label}"${val} \u2014 x:${e.x} y:${e.y} w:${e.width} h:${e.height}`;
|
|
66
|
+
});
|
|
66
67
|
return {
|
|
67
68
|
content: [{ type: "text", text: `Visible interactive elements:
|
|
68
69
|
${lines.join("\n")}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "chromeflow",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.13",
|
|
4
4
|
"description": "Browser guidance MCP server for Claude Code — highlights, clicks, fills, and captures from the web so you don't have to.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"dist",
|
|
11
|
-
"CLAUDE.md"
|
|
11
|
+
"CLAUDE.md",
|
|
12
|
+
"README.md"
|
|
12
13
|
],
|
|
13
14
|
"repository": {
|
|
14
15
|
"type": "git",
|
|
@@ -25,7 +26,7 @@
|
|
|
25
26
|
"chrome"
|
|
26
27
|
],
|
|
27
28
|
"scripts": {
|
|
28
|
-
"prebuild": "cp ../../CLAUDE.md ./CLAUDE.md",
|
|
29
|
+
"prebuild": "cp ../../CLAUDE.md ./CLAUDE.md && cp ../../README.md ./README.md",
|
|
29
30
|
"build": "tsc",
|
|
30
31
|
"postbuild": "node --input-type=commonjs -e \"const fs=require('fs');const f='dist/index.js';fs.writeFileSync(f,'#!/usr/bin/env node\\n'+fs.readFileSync(f,'utf8'));\"",
|
|
31
32
|
"dev": "tsc --watch"
|