update skill
This commit is contained in:
parent
62ec508b07
commit
5f8d3330f7
|
|
@ -24,27 +24,42 @@ Do NOT use this skill for:
|
|||
|
||||
## Setup overview
|
||||
|
||||
- **Launcher script**: `scripts/launch-chrome.sh` — starts Chrome with `--remote-debugging-port=9222` against the local profile copy at `.chrome/Default`.
|
||||
- **Launcher script**: `scripts/launch-chrome.sh` — starts Chrome with `--remote-debugging-port=9222` against the local profile copy at `.chrome/`. The script is idempotent: if Chrome is already running it exits immediately.
|
||||
- **Profile copy**: `.chrome/` is a fork of Oleg's `Profile 1` (the `usulpro@gmail.com` profile). Logged-in cookies live here. The directory is gitignored.
|
||||
- **MCP server**: `chrome-devtools` is configured in `.mcp.json` with `--browserUrl=http://127.0.0.1:9222`, i.e. it attaches to the already-running Chrome rather than launching its own.
|
||||
|
||||
You do not launch Chrome yourself — Oleg starts it manually via the script. Your job is to detect whether it's running and to use the MCP tools to drive it.
|
||||
|
||||
## Standard workflow
|
||||
|
||||
### 1. Verify Chrome is running and attached
|
||||
### 1. Ensure Chrome is running and attached
|
||||
|
||||
Before any browser action, confirm the debug port is live:
|
||||
Before any browser action, confirm the debug port is live, and launch Chrome automatically if it isn't:
|
||||
|
||||
```bash
|
||||
curl -sf http://127.0.0.1:9222/json/version >/dev/null && echo OK || echo DOWN
|
||||
```
|
||||
|
||||
If `DOWN`, tell Oleg:
|
||||
**If `DOWN`** — launch the script in the background and poll until Chrome is ready:
|
||||
|
||||
> Chrome не запущен с debug-портом. Запусти `./scripts/launch-chrome.sh` и скажи когда готово.
|
||||
```bash
|
||||
# Launch Chrome in background (script uses exec, so backgrounding the script is correct)
|
||||
nohup /projects/my-projects/cv-2026/scripts/launch-chrome.sh >/tmp/chrome-launch.log 2>&1 &
|
||||
|
||||
Do NOT try to launch Chrome yourself — the script blocks the terminal and the user is the one who controls the browser window.
|
||||
# Poll up to 15 seconds
|
||||
for i in $(seq 1 15); do
|
||||
sleep 1
|
||||
curl -sf http://127.0.0.1:9222/json/version >/dev/null && echo "Chrome up after ${i}s" && break
|
||||
echo "Waiting... ${i}s"
|
||||
done
|
||||
curl -sf http://127.0.0.1:9222/json/version >/dev/null || echo "FAILED"
|
||||
```
|
||||
|
||||
If Chrome does not respond after 15 seconds, stop and report:
|
||||
|
||||
> Chrome не запускается. Посмотри `/tmp/chrome-launch.log` и проверь, что `.chrome/` существует.
|
||||
|
||||
If the launcher prints `Error: .chrome/ does not exist`, stop immediately — there is no profile to use and you cannot create one.
|
||||
|
||||
Do NOT try to sign Oleg in, copy profiles, or work around a missing `.chrome/` directory.
|
||||
|
||||
### 2. Open / select the right page
|
||||
|
||||
|
|
@ -100,7 +115,7 @@ When the user asks "what fields does this application form want?", use `take_sna
|
|||
|
||||
| Symptom | Likely cause | Action |
|
||||
|---------|--------------|--------|
|
||||
| `curl http://127.0.0.1:9222/json/version` fails | Chrome not launched with debug port | Ask Oleg to run `./scripts/launch-chrome.sh` |
|
||||
| `curl http://127.0.0.1:9222/json/version` fails | Chrome not launched with debug port | Run `./scripts/launch-chrome.sh` in background and poll (see step 1) |
|
||||
| `new_page` times out but the tab appears in `list_pages` | Slow site / heavy SPA | Continue — check the final URL via `list_pages` |
|
||||
| Final URL is `/login`, `/checkpoint`, `/signin` | Not signed in | **Stop. Tell Oleg.** Don't try to log in for him. |
|
||||
| Feed/list shows only the first few items | Lazy loading hasn't fired | Scroll the inner container, not `window` |
|
||||
|
|
@ -109,7 +124,7 @@ When the user asks "what fields does this application form want?", use `take_sna
|
|||
|
||||
## Don'ts
|
||||
|
||||
- **Don't launch Chrome yourself** (the launcher blocks the terminal; Oleg owns the window).
|
||||
- **Don't launch Chrome interactively** — always use `nohup ... &` so it detaches from the terminal.
|
||||
- **Don't try to sign Oleg in** when you hit a login wall — just report and wait.
|
||||
- **Don't submit forms, click "Apply", send messages, or post anything** unless explicitly instructed.
|
||||
- **Don't loop on bot-detection pages** — one detection means stop.
|
||||
|
|
@ -118,7 +133,7 @@ When the user asks "what fields does this application form want?", use `take_sna
|
|||
|
||||
## Example: "read first N LinkedIn posts"
|
||||
|
||||
1. `curl -sf http://127.0.0.1:9222/json/version` → confirm Chrome up.
|
||||
1. `curl -sf http://127.0.0.1:9222/json/version` → if DOWN, launch via `nohup ./scripts/launch-chrome.sh &` and poll until up.
|
||||
2. `list_pages` — is LinkedIn already open? If not, `new_page(https://www.linkedin.com/feed/)`.
|
||||
3. Verify final URL contains `/feed/` and not `/login`.
|
||||
4. `evaluate_script`: find `<main>`, step `scrollTop += 1200` with 800ms waits until enough `"Feed post"` h2s have appeared.
|
||||
|
|
|
|||
|
|
@ -1,4 +1,15 @@
|
|||
{
|
||||
"JS_RemoteJobs": {
|
||||
"lang": "en",
|
||||
"priority": "p1",
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", " rust ", " java "]
|
||||
},
|
||||
"notificaJobs_nodeJS": {
|
||||
"lang": "en",
|
||||
"priority": "p1",
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", " rust "]
|
||||
},
|
||||
|
||||
"jaabz_com": {
|
||||
"lang": "en",
|
||||
"priority": "p1",
|
||||
|
|
@ -38,6 +49,28 @@
|
|||
"include": [["typescript", "javascript", " react", "node.js", "nodejs", "fullstack", "full-stack", "ai engineer", "tech lead", "techlead"]],
|
||||
"exclude": ["mental health", "marketing", "sales", "designer", "manager", "recruit", "kafka", "golang", "kotlin", "android", "swift"]
|
||||
},
|
||||
"ai_dev_job": {
|
||||
"lang": "ru",
|
||||
"priority": "p2"
|
||||
},
|
||||
"jsdevjob": {
|
||||
"lang": "ru",
|
||||
"priority": "p2",
|
||||
"include": [["react", "javascript", "typescript", "frontend", "fullstack", "full-stack", " llm", " ai engineer"]],
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", "курс ", "вебинар", "конкурс", "#резюме", "#resume"]
|
||||
},
|
||||
"itdevjobs": {
|
||||
"lang": "mixed",
|
||||
"priority": "p2",
|
||||
"include": [["#remote"], ["#typescript", "#javascript", "#react", "#fullstack"]],
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", "#резюме", "#resume", "#cv"]
|
||||
},
|
||||
"serbia_jobs": {
|
||||
"lang": "en",
|
||||
"priority": "p2",
|
||||
"include": [["#vacancy", "#вакансия"], ["frontend", "fullstack", "full-stack", "javascript", "typescript", " react", "node.js", "nodejs", "ai engineer", " llm", "tech lead"]],
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", " java ", "#cv", "#resume", "#резюме", "#ищуработу", "sales manager", "marketing"]
|
||||
},
|
||||
"javascript_jobs_feed": {
|
||||
"lang": "ru",
|
||||
"priority": "p2"
|
||||
|
|
@ -79,6 +112,18 @@
|
|||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", "#резюме", "#resume", "#cv", "#ищуработу"]
|
||||
},
|
||||
|
||||
"devsunite": {
|
||||
"lang": "en",
|
||||
"priority": "p3",
|
||||
"include": [["javascript", "typescript", " react", "node.js", "nodejs", "fullstack", "full-stack"]],
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", " java ", " rust ", "php", "devops", "qa", "sales", "marketing", "designer", "cloud engineer", "aws engineer"]
|
||||
},
|
||||
"it_jobs_cyprus": {
|
||||
"lang": "ru",
|
||||
"priority": "p3",
|
||||
"include": [["#vacancy", "#вакансия"], ["javascript", "typescript", " react", "node.js", "nodejs", "fullstack", "full-stack", "frontend", "ai engineer", " llm"]],
|
||||
"exclude": ["kafka", "golang", "kotlin", "android", "swift", " java ", "#cv", "#resume", "#резюме", "#ищуработу", "igaming", "iGaming", "sales", "marketing", "devops", "manual test", "qa engineer"]
|
||||
},
|
||||
"devops_jobs": {
|
||||
"lang": "ru",
|
||||
"priority": "p3",
|
||||
|
|
|
|||
Loading…
Reference in New Issue