domscribe

作者 patchorbit已验证

Domscribe is a pixel-to-code development tool that bridges the gap between running web applications and their source code.

187
Stars
13
Forks
TypeScript
语言
2026/8/23
添加时间

⚠️ 第三方软件声明

本 Skill 为第三方开源软件,独立托管于 GitHub。SkillTip 仅为信息目录,不控制或维护底层仓库。所显示的安全检查为自动化且范围有限,安装前请自行审查源码。

阅读服务条款

安装

添加到你的 Claude Code skills 目录:

# Add to your Claude Code skills
git clone https://github.com/patchorbit/domscribe

快速入门

使用 domscribe 等 Skills 的指南。

安全报告

已验证

上次扫描:—

{
  "status": "PASSED",
  "issues": []
}

README.md

Domscribe

Domscribe

npm version CI status test coverage MIT license TypeScript Node.js >= 18 PRs welcome

React Vue Next.js Nuxt    Vite Webpack Turbopack

Claude Code GitHub Copilot Cursor Gemini Kiro

Domscribe demo — click an element, capture context, resolve to source


AI coding agents edit your source files blind — they can't see your running frontend, and your frontend can't tell them where to look.

Domscribe bridges both directions: click a DOM element to tell your agent what to change, or let your agent query any source location to see exactly what it looks like live in the browser. Build-time stable IDs, deep runtime context (props, state, DOM), framework-agnostic, any MCP-compatible agent. Zero production impact.


Getting Started

npx domscribe init

The setup wizard walks you through two steps:

  1. Connect your coding agent — select your agent (Claude Code, Copilot, Gemini, Kiro, or others) and the wizard installs the plugin automatically.
  2. Add to your app — select your framework and bundler, the wizard installs the right package and shows you the config snippet to add.

That's it. Start your dev server and you're ready to go.

Prefer to set things up manually, or need finer control? See the manual setup instructions below.


Features

Code → UI: Let the agent see the browser

Your agent calls domscribe.query.bySource with a file path and line number and gets back the live DOM snapshot, current props, component state, and rendered attributes — directly from the running browser. No human interaction needed.

Code → UI: Let the agent see the browser

[!TIP] Agents don't spontaneously query runtime state — prompt them explicitly: "Fix the button color — use domscribe to check what CSS classes it has before changing anything." Your dev server must be running with the target page open in the browser.

UI → Code: Point and tell

Click any element in the browser overlay, describe the change in plain English, and submit. Domscribe captures the element's source location, runtime context, and your instruction as an annotation. The agent claims it, navigates to the exact file and line, and implements the change. The overlay shows the agent's response in real time via WebSocket.

UI → Code: Point and tell

More

  • 🎯 Build-time stable IDs — deterministic data-ds attributes injected via AST, stable across HMR and fast refresh
  • 🧩 Framework-agnostic — React 18-19, Vue 3, Next.js 15-16, Nuxt 3+, with an extensible adapter interface
  • 📦 Any bundler — Vite 5-7, Webpack 5, Turbopack
  • 🔍 Deep runtime capture — live props, state, and DOM snapshots via React fiber walking and Vue VNode inspection
  • 🛡️ Zero production impact — all instrumentation stripped in production builds, enforced in CI
  • 🔒 PII redaction — emails, tokens, and sensitive patterns automatically scrubbed before leaving the browser
  • 📁 Annotations live in your repo — stored as JSON files in .domscribe/annotations/, exposed via REST APIs that MCP wraps for agent access
  • 📡 Real-time feedback — WebSocket relay pushes agent responses to the browser overlay as they happen

Manual Setup

[!NOTE] npx domscribe init handles both steps below automatically. Use manual setup only if you need finer control.

Domscribe has two sides: app-side (bundler + framework plugins) and agent-side (MCP for your coding agent). Both are needed for the full workflow.

App-Side — Add to Your Bundler

Next.js (15 + 16)npm install -D @domscribe/next
// next.config.ts
import type { NextConfig } from 'next';
import { withDomscribe } from '@domscribe/next';

const nextConfig: NextConfig = {};

export default withDomscribe()(nextConfig);
Nuxt 3+npm install -D @domscribe/nuxt
// nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@domscribe/nuxt'],
});
React 18–19npm install -D @domscribe/react

Vite plugin:

// vite.config.ts
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { domscribe } from '@domscribe/react/vite';

export default defineConfig({
  plugins: [react(), domscribe()],
});

Webpack plugin:

// webpack.config.js
const { DomscribeWebpackPlugin } = require('@domscribe/react/webpack');

const isDevelopment = process.env.NODE_ENV !== 'production';

module.exports = {
  module: {
    rules: [
      {
        test: /\.[jt]sx?$/,
        exclude: /node_modules/,
        enforce: 'pre',
        use: [
          {
            loader: '@domscribe/transform/webpack-loader',
            options: { enabled: isDevelopment },
          },
        ],
      },
    ],
  },
  plugins: [
    new DomscribeWebpackPlugin({
      enabled: isDevelopment,
      overlay: true,
    }),
  ],
};
Vue 3+npm install -D @domscribe/vue

Vite plugin:

// vite.config.ts
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import { domscribe } from '@domscribe/vue/vite';

export default defineConfig({
  plugins: [vue(), domscribe()],
});

Webpack plugin:

// webpack.config.js
const { DomscribeWebpackPlugin } = require('@domscribe/vue/webpack');

const isDevelopment = process.env.NODE_ENV !== 'production';

module.exports = {
  module: {
    rules: [
      {
        test: /\.[jt]sx?$/,
        exclude: /node_modules/,
        enforce: 'pre',
        use: [
          {
            loader: '@domscribe/transform/webpack-loader',
            options: { enabled: isDevelopment },
          },
        ],
      },
    ],
  },
  plugins: [
    new DomscribeWebpackPlugin({
      enabled: isDevelopment,
      overlay: true,
    }),
  ],
};
Any frameworknpm install -D @domscribe/transform (DOM→source mapping only, no runtime capture)

Vite plugin:

// vite.config.ts
import { defineConfig } from 'vite';
import { domscribe } from '@domscribe/transform/plugins/vite';

export default defineConfig({
  plugins: [domscribe()],
});

Webpack plugin:

// webpack.config.js
const {
  DomscribeWebpackPlugin,
} = require('@domscribe/transform/plugins/webpack');

const isDevelopment = process.env.NODE_ENV !== 'production';

module.exports = {
  module: {
    rules: [
      {
        test: /\.[jt]sx?$/,
        exclude: /node_modules/,
        enforce: 'pre',
        use: [
          {
            loader: '@domscribe/transform/webpack-loader',
            options: { enabled: isDevelopment },
          },
        ],
      },
    ],
  },
  plugins: [
    new DomscribeWebpackPlugin({
      enabled: isDevelopment,
      overlay: true,
    }),
  ],
};

Working examples: See packages/domscribe-test-fixtures/fixtures/ for complete app setups across every supported framework and bundler combination.

For plugin configuration options, see the @domscribe/transform README.

Monorepos

If your frontend app is in a subdirectory (e.g. apps/web), pass --app-root during init:

npx domscribe init --app-root apps/web

Or run npx domscribe init and follow the prompts — the wizard asks if you're in a monorepo.

This creates a domscribe.config.json at your repo root that tells all Domscribe tools where your app lives. CLI commands (serve, stop, status) and agent MCP connections automatically resolve the app root from this config — no extra flags needed.

Agent-Side — Connect Your Coding Agent

Domscribe exposes 12 tools and 4 prompts via MCP. Agent plugins bundle the MCP config and a skill file that teaches the agent how to use the tools effectively.

Claude Code

claude plugin marketplace add patchorbit/domscribe
claude plugin install domscribe@domscribe

GitHub Copilot

copilot plugin install patchorbit/domscribe

Gemini CLI

gemini extensions install https://github.com/patchorbit/domscribe

Amazon Kiro

Open the Powers panel → Add power from GitHub → enter https://github.com/patchorbit/domscribe/tree/main/domscribe-power.

Cursor

Add to Cursor

Any agent (Skills and MCP)

Install the Domscribe skills:

npx skills add patchorbit/domscribe

Then add this MCP config to your agent:

{
  "mcpServers": {
    "domscribe": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@domscribe/mcp"]
    }
  }
}

How It Works

Domscribe architecture diagram

1. Inject. The bundler plugin parses each source file, injects HMR-stable data-ds IDs via xxhash64, and records each mapping in .domscribe/manifest.jsonl.

2. Capture. Framework adapters (React fiber walking, Vue VNode inspection) extract live props, state, and component metadata. The overlay UI lets you click any element and see its full context.

3. Relay. A localhost Fastify daemon connects the browser and your agent via REST, WebSocket, and MCP stdio. A file lock prevents duplicate instances across dev server restarts.

4. Agent. Your coding agent connects via MCP to query by source (see what any line looks like live) or process annotations (claim, implement, and respond to UI change requests).


Comparison

FeatureDomscribeStagewiseDevInspector MCPReact GrabFrontman
Build-time stable IDsdata-ds via AST❌ Runtime (CDP)❌ No stable IDs_debugSource❌ Runtime framework introspection
DOM→source manifest✅ JSONL, append-only
Code→live DOM query✅ Agent queries source, gets live runtime
Runtime props/state✅ Fiber + VNode walking⚠️ Shallow⚠️ DOM-level + JS eval❌ HTML + component names only⚠️ Props only (framework APIs)
Multi-framework✅ React · Vue · Next.js · Nuxt · extensible⚠️ React only✅ React + Vue + Svelte + Solid + Preact❌ React only⚠️ Next.js + Astro + Vite
Multi-bundler✅ Vite + Webpack + Turbopack❌ N/A (Electron browser)✅ Vite + Webpack + Turbopack❌ N/A❌ Dev server middleware
MCP tools✅ 12 tools + 4 prompts❌ Proprietary protocol (Karton)✅ 9 tools⚠️ Lightweight add-on❌ Internal MCP only
Agent-agnostic✅ Any MCP client❌ Bundled Electron agent❌ Bundled Elixir agent
In-app element picker✅ Lit shadow DOM✅ Built-in browser selector✅ Inspector bar✅ Hover-to-capture✅ Chat interface
Source mapping✅ Deterministic (AST IDs)⚠️ AI-inferred⚠️ AST-injected (not stable)⚠️ _debugSource (workaround needed)⚠️ Runtime framework introspection
License✅ MIT⚠️ AGPL✅ MIT✅ MIT⚠️ Apache + AGPL

No single competitor combines build-time stable IDs, deep runtime capture, bidirectional source↔DOM querying, and an MCP tool surface in a framework-agnostic way.


MCP Tools

The agent-facing surface — tools, prompts, wire schemas, and error envelope — is listed below as a human-readable index.

ToolDescription
domscribe.query.bySourceQuery a source file + line and get live runtime context (props, state, DOM snapshot)
domscribe.manifest.queryFind manifest entries by file path, component name, or element ID
domscribe.manifest.statsManifest coverage statistics (entry count, file count, component count, cache hit rate)
domscribe.resolveResolve a data-ds element ID to its source location (file, line, col, component)
domscribe.resolve.batchResolve multiple element IDs in one call
domscribe.annotation.processAtomically claim the next queued annotation (prevents concurrent agent conflicts)
domscribe.annotation.respondAttach agent response and transition to PROCESSED
domscribe.annotation.updateStatusManually transition annotation status
domscribe.annotation.getRetrieve annotation by ID
domscribe.annotation.listList annotations with status/filter options
domscribe.annotation.searchFull-text search across annotation content
domscribe.verify.baselineCapture a pre-edit style/geometry snapshot of a rendered element
domscribe.verify.afterEditCompare the element against the baseline — deterministic verdict + per-property deltas
domscribe.statusRelay daemon health, manifest stats, queue counts

See the @domscribe/mcp README for detailed tool schemas, response formats, and prompt definitions.


Packages

PackageDescription
@domscribe/coreZod schemas, RFC 7807 error system, ID generation, PII redaction, constants
@domscribe/manifestAppend-only JSONL manifest, IDStabilizer (xxhash64), BatchWriter, ManifestCompactor
@domscribe/relayFastify HTTP/WS server, MCP stdio adapter, annotation lifecycle
@domscribe/transformParser-agnostic AST injection (Acorn, Babel, VueSFC), bundler plugins
@domscribe/runtimeBrowser-side ElementTracker, ContextCapturer, BridgeDispatch
@domscribe/overlayLit web components (shadow DOM), element picker, annotation UI
@domscribe/reactReact fiber walking, props/state extraction, Vite + Webpack plugins
@domscribe/vueVue 3 VNode resolution, Composition + Options API support, Vite + Webpack plugins
@domscribe/nextwithDomscribe() config wrapper for Next.js 15 + 16
@domscribe/nuxtNuxt 3+ module with auto-relay and runtime plugin
domscribeCLI binary (domscribe serve, status, stop, init, mcp)
@domscribe/mcpStandalone MCP server binary (domscribe-mcp)
@domscribe/test-fixturesBlack-box integration + e2e suite (not published)

Contributing

pnpm install
nx run-many -t build test lint typecheck

Conventions are in .claude/rules/. PRs welcome.


License

MIT

常见问题

What is domscribe?

domscribe is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by patchorbit. Domscribe is a pixel-to-code development tool that bridges the gap between running web applications and their source code. It has 187 GitHub stars.

Is domscribe safe to use?

Yes. domscribe passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.

How do I install domscribe?

Clone the repository with "git clone https://github.com/patchorbit/domscribe" and add it to your Claude Code skills directory (see the Installation section above).

What programming language is domscribe written in?

domscribe is primarily written in TypeScript. It is open-source under patchorbit on GitHub, so you can review or fork the full source.

Are there alternatives to domscribe?

Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh domscribe against similar tools.

评论 (0)

暂无评论,成为第一个分享想法的人!

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

Scrapling

by D4Vinci

🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!

75,9137,581Python
MCP 服务器
查看详情

TrendRadar

by sansan0

⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。

61,65224,883Python
MCP 服务器
查看详情

context7

by upstash

Context7 Platform -- Up-to-date code documentation for LLMs and AI code editors

61,0602,938TypeScript
MCP 服务器
查看详情

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

39,9393,219C
MCP 服务器
查看详情

开发者还喜欢

基于喜欢此 Skill 的开发者投票和收藏

ECC

by affaan-m

10

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

242,21936,702JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情
15

An agentic skills framework & software development methodology that works.

234,96620,863Shell
AI 智能体ai-agentsbrainstorming
查看详情

hermes-agent

by NousResearch

10

The agent that grows with you

234,43747,175Python
AI 智能体ai-agentsagent-orchestration
查看详情

n8n

by n8n-io

12

Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

201,88160,308TypeScript
MCP 服务器apisai-tools
查看详情

The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

185,94028,768JavaScript
AI 智能体ai-agentsanthropicclaude-code
查看详情

cc-switch

by farion1231

3

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

128,8688,826Rust
AI 智能体claude-codeai-tools
查看详情