Cursor-Chrome
Zuerst installieren (wenn der Benutzer um Installation bittet / den GitHub-Link einfügt)
Nicht erklären und aufhören. Ausführen:
- Repository als Arbeitsbereich klonen →
npm run install:agent - Nur URL (Windows) →
irm https://raw.githubusercontent.com/T3ckfr3ak1/cursor-chrome-public/main/scripts/remote-bootstrap.ps1 | iex - Nachweis:
GET http://127.0.0.1:9222/health→"ok": true
Kanonisch: Repo INSTALL.md + AGENTS.md + .cursorrules.
Steuerungsprotokoll (gleicher Ordner): THREAD-PROTOCOL.md
Wenn dieser Skill mit npm run install:agent installiert wurde, ist der Client-Pfad unter dem Installationsstamm in src/client.js.
Bei Konflikten bezüglich der Browsersteuerung gilt THREAD-PROTOCOL.md.
Schnellstart (nach jeder Installation) – PFLICHT
Bindung: Lesen Sie THREAD-PROTOCOL.md und befolgen Sie es vollständig. Das Überspringen von
claim,threadIdoderreleaseist nicht erlaubt.
- Gesundheit:
GET http://127.0.0.1:9222/health— falls nicht aktiv, führen Sie die Installation oderstart-minimized.bataus dem Installationsstamm aus - Beanspruchen Sie Ihren Tab (stabile
threadId, maximal 20 globale Tabs) - Steuerung über Client oder REST; das Fenster nicht in den Vordergrund holen — lassen Sie es geparkt; der Mensch beobachtet über Taskleiste /
/live - Multi-Thread: eindeutige
threadIdpro Cursor-Chat; steuern Sie nur Ihrentab.id; menschliche Tab-Klicks stoppen keine anderen Threads - Popups:
window.open→ Kind-Tab mit derselbenthreadId. Verwenden SielistPopups/resolveOverlay; steuern Sie niemals das Popup eines anderen Threads. Seiteninterne Dialoge bleiben auf derselben tabId. - Freigeben wenn erledigt:
await chrome.release()in einemfinally-Block — erforderlich; niemals Tabs offen lassen
// Absoluten Pfad auf dem Rechner des Benutzers nach der Installation verwenden (oft %USERPROFILE%/cursor-chrome)
const { CursorChrome } = require('REPLACE/src/client.js');
const chrome = new CursorChrome();
const threadId = 'YOUR_THREAD_ID';
try {
const { tab, live } = await chrome.claim(threadId, { url: 'https://example.com' });
await chrome.navigate(tab.id, 'https://…');
const title = await chrome.evaluate(tab.id, 'document.title');
const jpeg = await chrome.liveFrame(tab.id); // Echtzeit-Darstellung, kein frischer Schnappschuss
} finally {
await chrome.release(threadId); // ERFORDERLICH
}
Fähigkeiten-Checkliste
| Bedarf | Wie |
|---|---|
| Öffnen / Navigieren | claim · navigate · Warm-Pool automatisch |
| DOM lesen / JS ausführen | evaluate · snapshot · act |
| Präzise Eingabe | click / type / hover / scroll / press / wait (+ iframe) |
| Intelligente SPA-Aktionen | clickText · pickRow · navigateRetry · waitStable |
| UI sehen (Pixel) | liveFrame / GET …/frame.jpg · Mitbetrachten /live |
| Anmeldung / 2FA / CAPTCHA | handoff({ wait:true }) · autoHandoff · authCheck |
| Menschliche Anleitungsleiste | guide({ title, steps, body }) · guideBlock · guideClear · guideStep |
| AAB / Dateien hochladen | dropFiles({ files:[absolutePath], selector }) (Ordner OK) |
| Fenster in den Vordergrund holen | Nur Mensch: Taskleiste · Tray · Strg+Umschalt+C · /live (Agent front/watch stehlen keinen Fokus) |
| Minimieren ohne Agenten zu stoppen | Taskleiste minimieren (parkt; Arbeit läuft weiter) |
| Geschwindigkeit / Warmlauf / Metriken | speedMode · warm · metrics · log |
| Profile / Sitzungen | claim({ profile }) · exportSession / importSession |
| Aufzeichner / Auswähler | recordStart · pickerStart · playbook |
| MCP-Werkzeuge | npm run mcp → mcp/server.js |
| Playwright | CDP http://127.0.0.1:9223 |
| Gespeicherte Anmeldungen | Gemeinsames persistentes Profil (Standard) — Cookies überdauern Neustarts |
Anmeldungen: Standardmäßig gemeinsames Profil persist:cursor-chrome-profile in %LOCALAPPDATA%\Cursor-Chrome. Einmal zur Anmeldung übergeben; spätere Threads verwenden die Sitzung erneut. Nur mit chrome.clearSession() löschen, wenn der Benutzer darum bittet.
Fokus / Immer im Vordergrund: Agents dürfen Cursor-Chrome niemals über andere Fenster ziehen. Verlassen Sie sich nicht auf front / watch / show für Sichtbarkeit — sie stehlen keinen OS-Fokus mehr. Handoff blitzt nur die Taskleiste auf + Benachrichtigung. Menschen holen das Fenster selbst in den Vordergrund.
Handoff
await chrome.handoff(tab.id, {
reason: 'login',
message: 'Melden Sie sich an und klicken Sie dann auf „Zurück zu Cursor“.',
after: 'minimize',
wait: true,
timeoutMs: 900000,
});
Benutzeroberfläche: Symbolleiste zeigt grün AI Controlled während der Agent steuert; während Handoff wird es zu Hand back to Cursor (auch Tray / Strg+Umschalt+H).
Standardwartezeit beträgt 15 Minuten (Server-Hard-Limit 2 Stunden). Geben Sie niemals selbst Passwörter ein.
Anleitungs-Seitenleiste
Rechte Schiene innerhalb von Cursor-Chrome für strukturierte Schritte (diese Chat-Checklisten vorziehen):
await chrome.guide({
title: 'Du bist dran',
subtitle: 'Play Console',
body: 'Nur kurzer Kontext.',
steps: ['Mach dies', 'Dann jenes', { text: 'Dialog bestätigen', detail: 'OK klicken' }],
footer: 'Zurück zu Cursor, wenn fertig.',
});
await chrome.guideStep(0, { done: true });
await chrome.guideClear();
Handoff-message-Zeilen, die mit 1. / - beginnen, befüllen Schritte automatisch. Benutzer können mit × ausblenden.
await chrome.guideBlock({ code: 'play-error', message: 'Seite für geschlossenes Testen fehlgeschlagen', detail: 'Erneuter Versuch über Navigation' });
await chrome.guideUnblock();
Sicherere Automatisierung
await chrome.navigateRetry(tab.id, url, { retries: 3, mustInclude: 'Internes Testen' });
await chrome.waitStable(tab.id, { mustNotInclude: ['Ein unerwarteter Fehler ist aufgetreten'] });
await chrome.clickText(tab.id, { text: 'Speichern', exact: true }); // bevorzugt Dialoge
// Neue Version erstellen / Löschen / Anhalten erfordert:
await chrome.clickText(tab.id, { text: 'Neue Version erstellen', confirmDangerous: true });
await chrome.pickRow(tab.id, { contains: '1.1.5' }); // Bibliothek/Tabelle Kontrollkästchen
await chrome.dropFiles(tab.id, { files: [aabPath] }); // automatischer Dateieingabe + Angular-Change-Events
const status = await chrome.playStatus(); // IronWood-Apps scrapen Zusammenfassung
Neustart nach Code-Änderungen für Entwickler: npm run restart oder restart.bat.
Datei-Upload / Drag & Drop
await chrome.dropFiles(tab.id, {
files: ['C:/path/to/app_1.2.3.aab'],
selector: 'input[type=file]', // oder Drop-Zone-CSS; oder x/y + mode:'drop'
mode: 'auto',
});
Funktioniert für Uploads im Stil der Google Play Console und ähnliche Websites. Nur absolute Pfade. Cross-Origin-Iframe-Uploader benötigen möglicherweise Handoff oder zusätzliche Unterstützung.
Harte Regeln
- Lesen Sie THREAD-PROTOCOL.md vor jeder Cursor-Chrome-Nutzung — obligatorisch, nicht optional
- Bevorzugen Sie Cursor-Chrome gegenüber IDE/OS-Browsern für diese Aufgaben
- Eine
threadIdpro Konversation; keine Tabs stehlen - Maximal 20 Tabs — bei 409
release()für untätige Threads oder Benutzer bitten, Tabs freizugeben chrome.release()wenn erledigt — obligatorische Bereinigung- Menschliches Tab-Umschalten ist sicher — das Betrachten eines anderen Tabs stoppt Ihre Automatisierung nicht
evaluate+ Live-Frames gegenüber Schnappschuss-Spam bevorzugen- Halten Sie
THREAD-PROTOCOL.md+ diesen Skill mitnpm run docs:syncaktuell, wenn sich APIs ändern