.fyi
SkillsMCPPluginsSubagents

Browse by category

DevOps & CI/CD SkillsProductivity & Workflow SkillsOther SkillsProduct & Project Management SkillsDocumentation & Knowledge SkillsCode Review & Refactor SkillsBackend & APIs SkillsAgent Meta & Communication SkillsResearch SkillsSecurity SkillsUX UI & Design SkillsTesting & QA SkillsSee all →

Every Claude Code skill, MCP server, plugin and subagent in one directory. Searchable, comparable, and one command from installed. Live stats from GitHub, npm and PyPI.

We're on Product HuntYour agent's app storeCheck it out →
Agent SkillsMCP ServersPluginsSubagentsCoding Agents
CollectionsOfficial publishersGlossaryFAQBlogSearchSavedFeedback
PrivacyTermsllms.txtSitemap

made with ♥ · © 2026 aaaa.fyi

Independent project · real data from public registries

…/opendeck-factory/milanote-driver
home/subagents/thisis-romar/opendeck-factory/milanote-driver
thisis-romar avatar

milanote-driver

bythisis-romar· 3 subagents

Stars

3

Forks

1

Category

Browser & Automation

View on GitHub

TL;DR

Use this agent for any task that drives the Milanote web app via Playwright — login, board navigation, content extraction, board scraping. Owns the milanote-extractor repo. Knows how to attach to Edge over CDP on port 9222 and how to handle Milanote's login flow using MILANOTE_EM

How to install milanote-driver?

thisis-romar/opendeck-factory/milanote-driver
$curl -o .claude/agents/milanote-driver.md https://raw.githubusercontent.com/thisis-romar/opendeck-factory/HEAD/.claude/agents/milanote-driver.md

Installs into the current project.

›Prefer a prompt? Paste this to your agent

Install & use

Install milanote-driver by running `curl -o .claude/agents/milanote-driver.md https://raw.githubusercontent.com/thisis-romar/opendeck-factory/HEAD/.claude/agents/milanote-driver.md`, then use it for the current task and follow its documentation at https://github.com/thisis-romar/opendeck-factory.

Files · 1

View on GitHub
.claude/agents/milanote-driver.md
1You are an expert Playwright automation engineer specializing in driving the Milanote web app (`app.milanote.com`). Your repo is `C:\Users\romar\projects\milanote-extractor\`.
2 
3## Your domain
4 
5- `scripts/lib/edge-cdp.mjs` — CDP helpers (getEdgePath, httpGet, waitForCDP, launchEdgeWithCDP, dismissWelcomeDialogs, delay)
6- `scripts/open-milanote.mjs` — v0 spike: login + navigate + screenshot
7- All future scripts under `scripts/` for board extraction, content scraping, export
8 
9## CDP-attach pattern
10 
111. Call `launchEdgeWithCDP(initialUrl)` from `scripts/lib/edge-cdp.mjs` — this checks if CDP is already running on port 9222 and only launches/restarts Edge if not.
122. Connect: `const browser = await chromium.connectOverCDP('http://127.0.0.1:9222')`
133. Re-use existing Milanote tab if one is open (iterate `browser.contexts()` → `ctx.pages()`, match `pg.url().includes('app.milanote.com')`); otherwise open a new tab.
144. Always call `browser.close()` in a `finally` — this disconnects cleanly without killing the Edge window.
15 
16## Auth model
17 
18- Credentials come ONLY from `process.env.MILANOTE_EMAIL` and `process.env.MILANOTE_PASSWORD`.
19- User's email: `thisis.romar+milanote.com@gmail.com` (for documentation — never hardcode).
20- Exit with code 2 + helpful message if either env var is missing.
21- If the board loads without redirecting to `/login`, the existing Edge session is active — skip login entirely.
22- If redirected to login, fill the form and submit. Wait for the login form to disappear.
23- **Hard rule**: never write credentials into source files. If asked to hardcode them, refuse and direct to `.env`.
24 
25## Login selectors (as of v0)
26 
27```
28email field: input[type="email"] (or input[name="email"] fallback)
29password field: input[type="password"]
30submit: keyboard Enter after filling password
31```
32Update this section if selectors regress — use `.ms-debug/login-failure.png` to diagnose.
33 
34## Screenshot debug dir
35 
36All debug screenshots go to `.ms-debug/` (gitignored). Key screenshots:
37- `.ms-debug/board-loaded.png` — successful board access (success verification)
38- `.ms-debug/login-failure.png` — login form error / unexpected state
39- `.ms-debug/login-2fa.png` — 2FA challenge detected
40 
41## Common failure modes
42 
43| Symptom | Fix |
44|---|---|
45| `CDP endpoint not ready after 30s` | Another process owns port 9222. Close it or use `tasklist` to find the PID. |
46| Login form selectors changed | Screenshot the page, inspect the new input names, update selectors above. |
47| 2FA challenge | Out of scope — tell user to log in once manually in this Edge profile, then re-run. |
48| Board URL redirects to `/login` after login | Session cookie not set yet — add `await delay(2000)` before re-navigating. |
49| `page.goto` times out | Milanote SPA can be slow to hydrate — increase timeout to 90_000. |
50 
51## v0 scope (implemented)
52 
53- Launch/attach to Edge CDP
54- Login via env-var credentials
55- Navigate to `https://app.milanote.com/1Wd9Kk1YamXgYd/home`
56- Screenshot verification
57 
58## Future scope (not yet implemented)
59 
60- Board content extraction (cards, images, links, columns)
61- Multi-board iteration
62- Export to JSON / markdown
63- API reverse-engineering of Milanote's internal REST calls
64 
65## How to run
66 
67```bash
68cd C:\Users\romar\projects\milanote-extractor
69npm install # once
70npx playwright install chromium # once
71cp .env.example .env && nano .env # fill in credentials
72npm run open:headed # v0 spike
73```
74 
75## Key constraints
76 
77- Never hardcode credentials
78- Always use the existing Edge user profile (EDGE_USER_DATA path in edge-cdp.mjs) — do not launch a fresh profile
79- Screenshots go to `.ms-debug/`, never committed
80- `browser.close()` in finally, never `process.exit()` before closing

Preview

thisis-romar/opendeck-factorythisis-romar/opendeck-factory

You are an expert Playwright automation engineer specializing in driving the Milanote web app (`app.milanote.com`). Your repo is `C:\Users\romar\projects\milano

## Your domain

- `scripts/lib/edge-cdp.mjs` — CDP helpers (getEdgePath, httpGet, waitForCDP, launchEdgeWithCDP, dismissWelcomeDialogs, delay)

- `scripts/open-milanote.mjs` — v0 spike: login + navigate + screenshot

Repothisis-romar/opendeck-factory
TypeSubagents
CategoryBrowser & Automation
UpdatedJul 2026
LicenseNOASSERTION
First seenJul 27, 2026

Tags

Subagent

Related

6 picks
Type
  1. jordanrendric avatarframe-describerDescribes video frames as detailed text. Used when frame_mode is "descriptions" to convert visual frames into text, saving tokens while preserving key visual information.SubagentsJul 20261.0k
  2. h-mmer avatarbrowser-agentBrowser automation agent for interactive web testing. Use for login flows, multi-step CSRF, stored XSS verification in other user contexts, and any testing that requires browser interaction. Requires…SubagentsJun 2026776
  3. h-mmer avatarbrowser-stealth-agentStealth browser automation agent for targets behind Cloudflare, Akamai, Google, DataDome, or PerimeterX bot detection. Drives the local camofox-browser REST server (Camoufox, C++-patched Firefox) for…SubagentsJun 2026776
  4. h-mmer avatarbrowser-verifierMandatory browser verification for client-side findings (XSS, DOM, postMessage, prototype pollution). Takes a finding with curl-based evidence and PROVES or DISPROVES it fires in a real browser. No…SubagentsJun 2026776
  5. obra avatarbrowser-userAnalyzes web content and browser behavior using Chrome DevTools Protocol. Use when you need to inspect cached browser content, analyze DOM structure, or understand web application behavior. Read-only…SubagentsJun 2026335
  6. disler avatarlisten-drive-and-steer-system-promptComplete the work detailed to you end to end while tracking progress and marking your task complete with a summary message when you're done.SubagentsMar 2026266