brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Work with Domscribe — the pixel-to-code bridge. Use when setting up, initializing, or configuring Domscribe for a project, OR when editing or modifying UI components (React, Vue, Next.js, Nuxt), implementing features from captured UI annotations, querying runtime context for
Claude Code
$ npx -y skills add patchorbit/domscribe --skill domscribe --agent claude-code
Codex
$ npx skills add patchorbit/domscribe --skill domscribe -a codex -y
Cursor
$ npx skills add patchorbit/domscribe --skill domscribe -a cursor -y
Gemini CLI
$ npx skills add patchorbit/domscribe --skill domscribe -a gemini-cli -y
GitHub Copilot
$ npx skills add patchorbit/domscribe --skill domscribe -a github-copilot -y
OpenCode
$ npx skills add patchorbit/domscribe --skill domscribe -a opencode -y
Windsurf
$ npx skills add patchorbit/domscribe --skill domscribe -a windsurf -y
name: domscribe description: Work with Domscribe — the pixel-to-code bridge. Use when setting up, initializing, or configuring Domscribe for a project, OR when editing or modifying UI components (React, Vue, Next.js, Nuxt), implementing features from captured UI annotations, querying runtime context for source locations, exploring component structure, or when user mentions annotations, queued tasks, UI changes, props, state, DOM, or asks about how elements render at runtime. allowed-tools: Read, Edit, Write, Bash, Glob, mcp__domscribe__*, domscribe.*, mcp.domscribe.*, process_next, check_status, explore_component, find_annotations
Domscribe bridges running UI and source code. It maps every rendered element to its exact source location and captures live runtime context (props, state, DOM). This works in two directions:
If `domscribe.status` returns `active: false`, Domscribe is not yet configured in this workspace. The `.domscribe/` directory is created automatically when the dev server starts with the Domscribe bundler plugin configured. Follow this procedure to set it up:
1. **Confirm dormant state** — call `domscribe.status`. If `active: false`, proceed. Note the `cwd` in the response. 2. **Detect framework** — read `package.json` (at `cwd`, or at the `appRoot` from `domscribe.config.json` if it exists) and match dependencies against the table below. 3. **Detect package manager** — check which lockfile exists at the project root. 4. **Install the package** — run the appropriate install command via Bash (e.g., `pnpm add -D @domscribe/next`). 5. **Edit the bundler config** — read the config file and apply the integration pattern. Load `references/config-patterns.md` for the exact import, transformation, and example for each framework. 6. **Update `.gitignore`** — if `.domscribe` is not already listed, append a `# Domscribe artifacts` comment and `.domscribe` entry. 7. **Inform the user** — tell them to start (or restart) their dev server. Domscribe activates automatically on first run.
Check `dependencies` and `devDependencies` in `package.json`. Match top-down (first match wins):
| Dependency | Framework | | ------------------- | ------------- | | `next` | next | | `nuxt` | nuxt | | `react` + `vite` | react-vite | | `react` (no `vite`) | react-webpack | | `vue` + `vite` | vue-vite | | `vue` (no `vite`) | vue-webpack | | `vite` only | other-vite | | `webpack` only | other-webpack |
| Framework | Package | Config file | | ------------- | ---------------------- | ------------------- | | next | `@domscribe/next` | `next.config.ts` | | nuxt | `@domscribe/nuxt` | `nuxt.config.ts` | | react-vite | `@domscribe/react` | `vite.config.ts` | | react-webpack | `@domscribe/react` | `webpack.config.js` | | vue-vite | `@domscribe/vue` | `vite.config.ts` | | vue-webpack | `@domscribe/vue` | `webpack.config.js` | | other-vite | `@domscribe/transform` | `vite.config.ts` | | other-webpack | `@domscribe/transform` | `webpack.config.js` |
| Lockfile | Package manager | | ------------------------ | --------------- | | `pnpm-lock.yaml` | pnpm | | `yarn.lock` | yarn | | `bun.lock` / `bun.lockb` | bun | | (none) | npm |
Install command pattern: `<pm> add -D <package>` (pnpm/yarn/bun) or `npm install -D <package>`.
If `domscribe.config.json` exists at the project root with an `appRoot` field, the frontend app lives in that subdirectory. Install packages and find the bundler config relative to `appRoot`.
If the project appears to be a monorepo (e.g., `apps/`, `packages/` directories, workspace config in `package.json`) but no `domscribe.config.json` exists, ask the user which directory contains the frontend app. Then write `domscribe.config.json` at the project root:
{ "appRoot": "apps/web" }The MCP server starts in dormant mode when no `.domscribe/` directory exists. After the user starts their dev server, the bundler plugin creates `.domscribe/` automatically. The MCP server will need to restart to detect the new workspace and transition to active mode with the full tool suite.
**Why query runtime state?** Source code alone doesn't tell you what props a component actually received, whether a conditional branch rendered, what CSS classes were applied, or what text the user sees. `domscribe.query.bySource` gives you the live truth from the browser.
**When to query (these tasks benefit):**
**When NOT to query (save the round-trip):**
Domscribe is a pixel-to-code development tool that bridges the gap between running web applications and their source code.
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.