Click any element in your running app, describe the change you want, and get a precisely targeted LLM prompt — with the right file, the right symbol, and the right context already resolved.
Telling an LLM "edit PricingPage.tsx" is imprecise. A rendered button may be owned by its component file, a CSS module, a shared design token, or the parent that controls its layout. sem-edit resolves that causal chain before the LLM gets involved.
- Press
Ctrl+Shift+Ein your dev server to activate the overlay - Click any element — sem-edit walks the React/Preact fiber tree to find the owning component and its source location
- An owner graph (built at dev time from your source) is traversed to rank candidate edit surfaces: the component file, its CSS module, any applied class, text literals, event handlers
- Type your instruction in the inspector panel — intent is classified (style / copy / behavior / layout / data) and surfaces are re-ranked accordingly
- Click Copy Prompt or Copy JSON to get a fully assembled context bundle ready to paste into any LLM
The LLM receives the smallest correct surface — not a file dump.
| Package | Description |
|---|---|
@sem-edit/vite-plugin |
Vite plugin — overlay, indexer, owner graph, ranking, packager |
| Example | Framework |
|---|---|
examples/react |
React + @vitejs/plugin-react |
examples/preact |
Preact + @preact/preset-vite |
pnpm add -D @sem-edit/vite-pluginReact (vite.config.ts):
import react from '@vitejs/plugin-react'
import { semEditPlugin } from '@sem-edit/vite-plugin'
export default defineConfig({
plugins: [react(), semEditPlugin()],
})Preact (vite.config.ts):
import preact from '@preact/preset-vite'
import { semEditPlugin } from '@sem-edit/vite-plugin'
export default defineConfig({
plugins: [preact(), semEditPlugin()],
})A brief on-screen hint shows the activation shortcut when the dev server starts. See @sem-edit/vite-plugin for the full options reference.