From edb5ef9e283fcf75bcdc1f6821f3a709b6dce34b Mon Sep 17 00:00:00 2001 From: "Yuval.D" Date: Fri, 26 Dec 2025 10:41:02 +0200 Subject: [PATCH] feat(scripts): add skill installation script and npm install command --- README.md | 8 ++++++++ package.json | 5 ++++- scripts/install-skill.js | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 scripts/install-skill.js diff --git a/README.md b/README.md index 708fcc5..ce83e5b 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,14 @@ bdg dom query "button" # High-level helpers bdg stop # End session ``` +## Claude Code Integration + +```bash +bdg-integrate # Symlinks bdg skill to ~/.claude/skills/ +``` + +That's it! No MCP server needed - Claude gets direct access to browser APIs. Registers bdg as a [Claude Code skill](https://docs.anthropic.com/en/docs/claude-code). + ## Current State **Raw CDP access is complete.** All 644 protocol methods (53 domains) work now. High-level wrappers (`bdg dom`, `bdg network`) are being added for common operations. See [Commands](https://github.com/szymdzum/browser-debugger-cli/wiki/Commands) for full reference. diff --git a/package.json b/package.json index 11a8bc9..cebcac5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "DevTools telemetry in your terminal. For humans and agents. Direct WebSocket to Chrome's debugging port.", "type": "module", "bin": { - "bdg": "dist/index.js" + "bdg": "dist/index.js", + "bdg-integrate": "scripts/install-skill.js" }, "scripts": { "build": "tsc && tsc-alias", @@ -90,6 +91,8 @@ }, "files": [ "dist", + "scripts", + ".claude/skills", "README.md" ], "lint-staged": { diff --git a/scripts/install-skill.js b/scripts/install-skill.js new file mode 100755 index 0000000..7fc96ed --- /dev/null +++ b/scripts/install-skill.js @@ -0,0 +1,35 @@ +#!/usr/bin/env node + +import { existsSync, mkdirSync } from 'node:fs'; +import { resolve, dirname } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import { homedir } from 'node:os'; +import { execSync } from 'node:child_process'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const packageRoot = resolve(__dirname, '..'); + +const sourceSkillDir = resolve(packageRoot, '.claude', 'skills', 'bdg'); +const targetDir = resolve(homedir(), '.claude', 'skills'); +const targetSkillDir = resolve(targetDir, 'bdg'); + +function main() { + if (!existsSync(sourceSkillDir)) { + console.error('Source skill directory not found:', sourceSkillDir); + process.exit(1); + } + + if (!existsSync(targetDir)) { + mkdirSync(targetDir, { recursive: true }); + } + + try { + execSync(`ln -sfn "${sourceSkillDir}" "${targetSkillDir}"`); + console.log('Installed bdg skill to', targetSkillDir); + } catch (err) { + console.error('Failed to create symlink:', err.message); + process.exit(1); + } +} + +main();