Agent skill

Domscribe

by patchorbit in patchorbit/domscribe

Work with Domscribe — the pixel-to-code bridge. An agent skill from patchorbit/domscribe.

MITAuto-check: notesAgent Workflows

Install Domscribe

skills CLI
$ npx skills add patchorbit/domscribe --skill domscribe -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install patchorbit/domscribe domscribe --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/patchorbit/domscribe.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/domscribe .claude/skills/domscribe && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
domscribe
GitHub stars
193
Token cost
~3.3k tokens
SKILL.md length
1,346 words
Files
2 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Work with Domscribe — the pixel-to-code bridge. An agent skill from patchorbit/domscribe.

  • Works in 7 steps: Confirm dormant state — call… → Detect framework — read package.json (at… → Detect package manager — check which… → …
  • Configuring Domscribe for a project
  • SKILL.md covers Setup / Initialization, Editing Components (Code → UI), Quick Commands (MCP Prompts) and All Tools Reference, plus 5 more sections
  • Calls pnpm and npm

What it does

Domscribe is an agent skill from patchorbit/domscribe. 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.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/config-patterns.md`).

It sits in Agent Workflows, covering MCP servers. It works with Nuxt, Model Context Protocol, React and Next.js. The repository describes itself as: Domscribe is a pixel-to-code development tool that bridges the gap between running web applications and their source code. The licence is MIT.

When your agent uses it

  • Configuring Domscribe for a project
  • Modifying UI components (React
  • Implementing features from captured UI annotations
  • Querying runtime context for source locations

Example prompts

  • “/domscribe”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Read, Edit, Write, Bash, Glob, mcp__domscribe__*, domscribe.*, mcp.domscribe.*, process_next, check_status, explore_component, find_annotations

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  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…
  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…
  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.

What it can do on your machine

Read from SKILL.md and the folder at commit accfd5c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Edit
    • Write
    • Bash
    • Glob
    • mcp__domscribe__*
    • domscribe.*
    • mcp.domscribe.*
    • process_next
    • check_status

    …and 2 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm and npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Domscribe loads about 3.3k tokens when it runs, and up to ~4.6k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 1,346 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Edit, Write, Bash, Glob, mcp__domscribe__*, domscribe.*, mcp.domscribe.*, process_next, check_

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from patchorbit/domscribe at commit accfd5c, republished under its MIT licence (© patchorbit). 1,346 words, ~3,273 tokens.

Download SKILL.mdSave it as .claude/skills/domscribe/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
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

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:

  • UI → Code: User clicks an element in the browser, Domscribe captures it as an annotation with source location, runtime context, and user intent. You claim and implement it.
  • Code → UI: You're editing a source file and want to know what an element looks like at runtime. Query by file and line to get live props, state, and DOM snapshot.

Setup / Initialization

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.
Framework Detection

Check dependencies and devDependencies in package.json. Match top-down (first match wins):

DependencyFramework
nextnext
nuxtnuxt
react + vitereact-vite
react (no vite)react-webpack
vue + vitevue-vite
vue (no vite)vue-webpack
vite onlyother-vite
webpack onlyother-webpack
Package Mapping
FrameworkPackageConfig file
next@domscribe/nextnext.config.ts
nuxt@domscribe/nuxtnuxt.config.ts
react-vite@domscribe/reactvite.config.ts
react-webpack@domscribe/reactwebpack.config.js
vue-vite@domscribe/vuevite.config.ts
vue-webpack@domscribe/vuewebpack.config.js
other-vite@domscribe/transformvite.config.ts
other-webpack@domscribe/transformwebpack.config.js
Package Manager Detection
LockfilePackage manager
pnpm-lock.yamlpnpm
yarn.lockyarn
bun.lock / bun.lockbbun
(none)npm

Install command pattern: <pm> add -D <package> (pnpm/yarn/bun) or npm install -D <package>.

Monorepo Projects

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:

json
{ "appRoot": "apps/web" }
After Setup

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.

Editing Components (Code → UI)

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):

  • Visual/styling bugs — "the button is the wrong color." Query reveals the actual className, inline styles, and computed attributes so you can see what CSS is winning.
  • Conditional rendering bugs — "this section doesn't show up." Query tells you rendered: false or shows the actual props/state that control the condition.
  • Prop tracing — "the title shows 'undefined'." Query shows componentProps with the actual values flowing through, revealing where the chain breaks.
  • Verifying your edit worked — After editing, query the same location to confirm the DOM, props, and text updated as expected (HMR will have applied your change).

When NOT to query (save the round-trip):

  • Pure logic changes (utils, hooks with no DOM output, API calls)
  • Creating new files or components from scratch (nothing to query yet)
  • Refactoring (renames, extractions, moves)
  • Type errors or build failures (the compiler already tells you what's wrong)

Prerequisite: Runtime queries require the user's dev server to be running and the target component to be rendered in an open browser tab. Before calling domscribe.query.bySource, confirm with the user that they have the relevant page open. If you get browserConnected: false or runtime.rendered: false, ask the user to navigate to the page that renders the component and retry.

Workflow:

  1. Confirm the page is open — ask the user if they have the page with the target component open in their browser. If not, ask them to navigate there first.
  2. Before editing (if the task matches the scenarios above): Call domscribe.query.bySource with the file path and line number. Inspect runtime.componentProps, runtime.componentState, and runtime.domSnapshot.
  3. Edit the component source code.
  4. After editing: Call domscribe.query.bySource again to verify your changes took effect in the live browser.
Show full SKILL.md (550 more words)Show less

Quick Commands (MCP Prompts)

CommandPurpose
process_nextProcess next queued annotation
check_statusSystem health and queue counts
explore_componentList elements in a component
find_annotationsSearch annotation history

All Tools Reference

Tool names below use their MCP registration names (e.g., domscribe.query.bySource). Your client may map these differently — use whatever tool name your environment exposes for the domscribe MCP server.

Source Query (Code → UI)
ToolPurpose
domscribe.query.bySourceGet runtime context for a source location (file + line)
domscribe.manifest.queryFind all manifest entries by file, component, or tag name
domscribe.manifest.statsManifest coverage statistics (entry/file/component counts)
Element Resolution (UI → Code)
ToolPurpose
domscribe.resolveGet source location for element ID
domscribe.resolve.batchResolve multiple element IDs
Annotation Workflow
ToolPurpose
domscribe.annotation.processClaim next queued annotation (atomic)
domscribe.annotation.respondStore your implementation message
domscribe.annotation.updateStatusMark as processed or failed
domscribe.annotation.listList annotations by status
domscribe.annotation.getGet full annotation details
domscribe.annotation.searchSearch by element, file, or text
System
ToolPurpose
domscribe.statusRelay health, manifest, queue counts

Using domscribe.query.bySource

When you're working in a source file and want to understand what an element looks like at runtime, query by file path and line number:

Input:

  • file (required): Absolute file path as stored in the manifest. Use domscribe.manifest.query to discover exact paths.
  • line (required): Line number (1-indexed).
  • tolerance (optional): Match elements within N lines of the target (default: 0, exact match).
  • column (optional): Narrow to a specific column (0-indexed).
  • includeRuntime (optional): Skip the browser query if you only need manifest data (default: true).

Output:

  • sourceLocation: Confirmed file, line range, tag name, component name.
  • runtime: Live data from the browser (if connected) — componentProps, componentState, domSnapshot (tag, attributes, innerText).
  • browserConnected: Whether a browser client is connected via WebSocket.

Use domscribe.manifest.query first if you don't know the exact line — it returns all entries for a file, component, or tag, which you can then target with domscribe.query.bySource.

Annotation Lifecycle

queued → processing → processed
                   ↘ failed (with errorDetails)
       any status → archived
  • queued: Waiting for agent to claim
  • processing: Agent is working on it (claimed atomically)
  • processed: Successfully implemented
  • failed: Could not implement (include errorDetails)
  • archived: Removed from active queue

Annotation Workflow

  1. Claim an annotation via domscribe.annotation.process

  2. Understand the response:

    • userIntent: What the user wants (e.g., "Make this button red")
    • sourceLocation.file: Source file path
    • sourceLocation.line: Line number
    • sourceLocation.componentName: React/Vue component name
    • element.innerText: Visible text (verify correct element)
    • runtimeContext.componentProps: Current prop values
  3. Navigate to sourceLocation.file:sourceLocation.line

  4. Implement the change based on userIntent

  5. Verify via domscribe.query.bySource — call with the same file and line to confirm your changes are reflected in the live browser (HMR will have updated the page)

  6. Store your response via domscribe.annotation.respond with the annotation ID and a message describing what you did

  7. Complete the annotation via domscribe.annotation.updateStatus with status processed (or failed with errorDetails)

Error Handling

SituationAction
found: falseNo match — queue empty or no manifest entry
browserConnected: falseRuntime data unavailable; manifest data still returned
Source file missingMark failed with details
Ambiguous intentAsk user for clarification before implementing
Partial successMark processed, note limitations in response
Cannot implementMark failed with errorDetails explaining why

Key Principles

  • Read userIntent carefully — it's the user's actual words
  • Use domscribe.query.bySource to verify runtime state before and after changes
  • Use element.innerText to confirm you're changing the right element
  • Use runtimeContext to understand current component state
  • Make minimal, focused changes
  • Provide clear explanation via domscribe.annotation.respond
  • Search with domscribe.annotation.search to check for related prior work

© patchorbit, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/domscribe of patchorbit/domscribe.

  • SKILL.md
  • references/config-patterns.md

Open the folder on GitHubat commit accfd5c

Compare with similar skills

Domscribe next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Domscribe compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Domscribe this skillpatchorbit/domscribe193—~3.3kAutomated safety check: NotesMIT
Databuddydatabuddy-analytics/Databuddy1.2k—~2.1kAutomated safety check: PassAGPL-3.0
Create MCP Appsammcj/agentic-coding162—~3kAutomated safety check: PassApache-2.0
Scaffold ProjectMarve10s/Better-Fullstack752—~716Automated safety check: PassMIT
Chat Apps UI SDKpproenca/dot-skills214—~2.4kAutomated safety check: PassMIT
Frontend Build Timing Auditopenops-cloud/openops1.1k—~2.3kAutomated safety check: PassCustom licence

Similar skills

  • Databuddy

    databuddy-analytics/Databuddy

    Integrate Databuddy analytics using the SDK, REST API, or MCP.

    1.2k GitHub stars~2.1k tokensUpdated today
    Backend & APIsAuto-check passed
  • Create MCP App

    sammcj/agentic-coding

    This skill should be used when the user asks to "create an MCP App", "add a UI to an MCP tool", "build an interactive MCP View", or needs guidance on MCP Apps SDK patterns, UI-resource registration…

    162 GitHub stars~3k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Scaffold Project

    Marve10s/Better-Fullstack

    Scaffold a new app, API, backend, fullstack project, mobile app, polyglot service, monorepo, or starter with Better Fullstack.

    752 GitHub stars~716 tokensUpdated today
    DevelopmentAuto-check passed
  • Chat Apps UI SDK

    pproenca/dot-skills

    Interactive UI rendered inside ChatGPT or Claude — OpenAI Apps SDK apps, MCP Apps (the @modelcontextprotocol/ext-apps standard), or MCP-UI components, with a Next.js/React server.

    214 GitHub stars~2.4k tokensUpdated 1 mo ago
    Frontend & DesignAuto-check passed
  • Frontend Build Timing Audit

    openops-cloud/openops

    Detects and diagnoses chunk-evaluation timing bugs in the Vite/rolldown production build of react-ui (works-in-dev / broken-in-build i18n regressions, missing UI labels, module-scope t()…

    1.1k GitHub stars~2.3k tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Chatgpt App Builder

    alpic-ai/skybridge

    Guide developers through creating and updating ChatGPT plugins.

    2.1k GitHub stars~1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

Questions about Domscribe

What does Domscribe do?

Work with Domscribe — the pixel-to-code bridge. An agent skill from patchorbit/domscribe. Domscribe is an agent skill from patchorbit/domscribe. Work with Domscribe — the pixel-to-code bridge.

When should I use Domscribe?

Domscribe fits situations like: configuring Domscribe for a project; modifying UI components (React; implementing features from captured UI annotations; querying runtime context for source locations.

How do I install Domscribe in Claude Code?

Run `npx skills add patchorbit/domscribe --skill domscribe -a claude-code`. Or copy the skill folder (skills/domscribe in patchorbit/domscribe) into .claude/skills/domscribe in your project. Claude Code loads it when a task matches its description.

How do I install Domscribe in Codex?

Run `npx skills add patchorbit/domscribe --skill domscribe -a codex`. Or copy the skill folder (skills/domscribe in patchorbit/domscribe) into .agents/skills/domscribe in your project. Codex loads it when a task matches its description.

Can I use Domscribe in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add patchorbit/domscribe --skill domscribe -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/domscribe, .gemini/skills/domscribe, .github/skills/domscribe and .opencode/skills/domscribe in your project.

What does Domscribe need to run?

Going by SKILL.md and its folder, Domscribe needs the command-line tools its instructions call (pnpm and npm). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Read, Edit, Write, Bash, Glob, mcp__domscribe__*, domscribe.*, mcp.domscribe.*, process_next, check_status, explore_component, find_annotations.

Does Domscribe access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Domscribe safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Domscribe use?

Domscribe is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Domscribe use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.4k tokens, read only when the agent opens those files.

What are the alternatives to Domscribe?

Skills that share tags, products or a category with Domscribe: Databuddy (databuddy-analytics/Databuddy, 1.2k stars), Create MCP App (sammcj/agentic-coding, 162 stars), Scaffold Project (Marve10s/Better-Fullstack, 752 stars) and Chat Apps UI SDK (pproenca/dot-skills, 214 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Domscribe?

patchorbit (a GitHub organization) maintains it in patchorbit/domscribe, which has 193 GitHub stars. The repository was last updated on August 9, 2026.

Source: patchorbit/domscribe on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.