mit einem Klick
site-memory
// Persistent memory for repeated browser work. Use when an agent revisits the same sites or flows and should load a few relevant notes up front, then save durable site knowledge after the task finishes.
// Persistent memory for repeated browser work. Use when an agent revisits the same sites or flows and should load a few relevant notes up front, then save durable site knowledge after the task finishes.
| name | site-memory |
| description | Persistent memory for repeated browser work. Use when an agent revisits the same sites or flows and should load a few relevant notes up front, then save durable site knowledge after the task finishes. |
This skill adds a reusable note loop to browser automation.
Its job is intentionally narrow:
It does not define business schemas. It does not own the browser driver. Pair it with whatever browser control tool you already trust.
Memory is global and shared across all projects. Notes about a website learned in one project are automatically available in every other project.
The default location is ~/.site-memory/. Override with SITE_MEMORY_HOME or
--runtime-base <path>.
Resolve it with:
node ./scripts/resolve-runtime-root.mjs
Initialize it with:
node ./scripts/init-memory-root.mjs
The runtime root contains:
INDEX.md as a compact indexSupported note kinds:
operatorguidancecontextreferenceUse them this way:
operator: collaboration preferences, pause points, tolerance for automationguidance: reusable rules, warnings, and tacticscontext: surrounding deadlines or constraints that matter across runsreference: stable selectors, URL patterns, routes, and site structurenode ./scripts/build-recall-input.mjs --task "<current task>"
Use the generated selector prompt to choose only the notes that are likely to save real exploration time.
Open only the chosen files:
node ./scripts/read-recalled-files.mjs --files "reference/foo.md,guidance/bar.md"
After the browser task ends, build the write-back prompt:
node ./scripts/build-distill-input.mjs --message-count <n>
The output contains a prompt field. You MUST execute that prompt as an
after-action pass. This pass can:
That pass should:
INDEX.md shortA CDP-based browser control skill is bundled at ./vendor/chrome-cdp-skill/.
Read its instructions before first use:
cat ./vendor/chrome-cdp-skill/skills/chrome-cdp/SKILL.md
Use node ./scripts/cdp-proxy.mjs <command> [args] for browser interaction.
All commands use ./scripts/cdp-proxy.mjs. The <target> is a unique
targetId prefix from list.
list List open pages
shot <target> [file] Viewport screenshot
snap <target> Accessibility tree snapshot
nav <target> <url> Navigate and wait for load
click <target> <selector> Click by CSS selector
clickxy <target> <x> <y> Click at CSS pixel coordinates
type <target> <text> Type text at current focus
eval <target> <expr> Evaluate JavaScript
html <target> [selector] Full page or element HTML
open [url] Open new tab
shot saves at native resolution: image pixels = CSS pixels x DPR.
CDP input events use CSS pixels: CSS px = screenshot px / DPR.
snap --compact over html for page structuretype (not eval) to enter text in cross-origin iframesFor repeated browser work, follow these phases in order:
node ./scripts/init-memory-root.mjs
node ./scripts/build-recall-input.mjs --task "<url> <objective>"
Read the manifest from the output, choose the strongest matches, then open only those notes:
node ./scripts/read-recalled-files.mjs --files "file1.md,file2.md"
Use the browser tool to accomplish the objective. If notes mention selectors or routes, verify them on the live page before depending on them.
After the task, save only the parts that should help a future visit. For site
knowledge, a reference note often benefits from a body structure like:
## What this site is
## How the site works
## Verified selectors
## Pitfalls
## Successful paths
Update INDEX.md after writing. If the task produced no durable lesson, skip
the write-back.