highlight-screenshot
Take a screenshot of a page in a locally running app with a red ring and a short label round one element, so a developer can see exactly which button, link or…
Skill by ohnotnow
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ohnotnow-highlight-screenshot
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: testing
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/highlight-screenshot
What's inside
- Skill name
highlight-screenshot- Description
- Take a screenshot of a page in a locally running app with a red ring and a short label round one element, so a developer can see exactly which button, link or field a finding is about. Use when the user asks "which button is that?", "show me where that is", or wants a screenshot pointing at the element behind a file:line from a review (for example a devtools-rummage finding). Local apps only; uses playwright-cli with Playwright's own Chromium.
- License
- MIT
- Instructions
- 84 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (2)
- SKILL.md
- highlight.js
SKILL.md (first lines)
# Highlight screenshot
A finding says `choose-project.blade.php:24`, and the page has twenty buttons. The developer wants a picture with "this one" on it. This skill logs in to their local app, rings the element, and hands back a screenshot.
It is a pointer, not a test. Navigate and look; never click anything that saves, sends or deletes.
Load the `playwright-cli` and `playwright-cli-quirks` skills alongside this one.
## 1. Work out the page and the element
Start from the file and line.
- **The page.** Find the Livewire component or controller that renders the view, then the route that reaches it (`routes/web.php`, or `lando artisan route:list`). If the route needs a record id, find one that the logged-in user can actually see.
- **The element.** Read the Blade around the line: its text, `wire:click`, label, and whether it sits in a `@foreach` or inside a modal. Turn that into a Playwright locator, preferring role and name (`getByRole('button', { name: 'Accept' })`).
- **Repeated elements.** One Blade line in a loop can render a dozen identical buttons. Ring one, the first that fits the finding (for example the first disabled one), and name it in the label ("Copy next, Monday 5th"). Ringing all of them brings back the "which one?" problem.
- **Not rendered.** If the element is behind `@if`/`@can` and the user you log in as never sees it, say so. That is often the point of the finding. Don't hunt for another account without asking.
## 2. Check the URL is local
Only `localhost`, `127.0.0.1` and `*.lndo.site`. Anything else: stop and ask. This is a guard against pointing a browser at a real service by mistake, not a security boundary.
## 3. Open the browser
If you are in a laravel codebase try reading database/seeders/TestDataSeeder.php first - there will often be a local-development admin user account seeder. Ask the user for a login if they haven't given one and there's nothing obvious in the seeder (or it's not a laravel app).
Work from the app's root. If `.playwright/cli.config.json` doesn't exist there, create it:
```json
{
"browser": {
"browserName": "chromium",
"launchOptions": { "channel": "chromium" },
"contextOptions": { "ignoreHTTPSErrors": true, "viewport": { "width": 1280, "height": 800 } }
}
}
```
The `channel` matters: without it playwright-cli drives the user's installed Google Chrome, and macOS may then pop up a prompt asking to let the terminal modify apps. If the bundled Chromium is missing, `playwright-cli install-browser chromium` fetches the build playwright-cli expects (the revision must match, so an `npx playwright install` from a different Playwright version won't do).
```bash
playwright-cli -s=highlight open --idle-timeout=600000 https://<app>.lndo.site/login
```
The idle timeout closes a forgotten session after ten minutes instead of the default hour.
Log in with `run-code`, using the form's labels:
```bash
playwright-cli -s=highlight run-code "async page => { await page.getByLabel('Username').fill('<user>'); await page.getByLabel('Password').fill('<password>'); await page.getByRole('button', { name: 'Log In' }).click(); await page.waitForURL(u => !u.pathname.startsWith('/login')); return page.url(); }"
```
Then `goto` the page. If the element lives in a modal or a tab, open it; that click must be one that only shows something.
## 4. Ring it and take the shot
Copy `highlight.js` (next to this file) somewhere outside the app, edit its three constants (locator, label, output path) and run it:
```bash
playwright-cli -s=highlight run-code --filename=/absolute/path/to/your/highlight.js
```
- Target elements with locators in the script, not snapshot refs: disabled elements get no `ref` in playwright-cli's snapshot.
- Save to `screenshots/<short-slug>-<yyyy-mm-dd>.png` in the app's root, as an absolute path.
- Keep the label short: "This one: Save", plus which instance if it repeats.
- If the Laravel debugbar covers the element, hide it (`.phpdebugbar { display: none !important; }`) and say so.
Then **look at the image** with the Read tool before handing it over. Is the ring round the right element, solid red, with the label clear of it? A screenshot can come back blank or show the wrong page (see `playwright-cli-quirks`).
## 5. Close up straight away
As soon as the shot is checked, before you report:
```bash
playwright-cli -s=highlight close
ps -axo pid,command | rg -i 'cliDaemon|playwright_|ms-playwright'
```
Nothing should be left. Don't leave a browser open while you talk to the user.
## 6. Report
Give the full path of the screenshot (the user's terminal hides link targets, so write the path out), the page URL, and which instance you ringed if the element repeats. If the element wasn't rendered for that user, say that instead of producing a screenshot of the wrong thing.From ohnotnow/agentic-stuff, MIT.
More from ohnotnow/agentic-stuff
- 0.592score
conversation-to-html
ohnotnow
Convert a Claude Code or Codex CLI session into a beautiful, shareable single HTML file for presentations and workshops.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
house-style
ohnotnow
Teach a personal editor agent the user's own editing taste by reading the diff between an AI-drafted document and the user's hand-edit of it, encoding the…
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
i-impeccable
ohnotnow
Create distinctive, production-grade frontend interfaces with high design quality.
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
audience-credibility
ohnotnow
Defensive credibility check for deliverables (reports, dashboards, demos, presentations, web pages, marketing copy) aimed at a real human audience —…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
github-create
ohnotnow
Create a new GitHub repository from the current local project, push code, and handle finishing touches (README, LICENSE, description).
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
grounded-recommendation
ohnotnow
Structured process for technical recommendations and implementation advice.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ait-recap
ohnotnow
Generate a friendly markdown recap of recent `ait` activity for the current project, or scan a directory of projects.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ant
ohnotnow
Local-first notebook for *why* — design decisions, alternatives rejected, pivots taken, the conversational nuance that gets lost when an issue closes.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
feature-workflow
ohnotnow
Streamlined workflow for implementing features with ait issue tracking.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
flux-ui
ohnotnow
Flux UI v2 component reference and design-taste guide for Laravel/Livewire.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ait-crafting
ohnotnow
Turn a settled feature discussion or plan document into consultant-ready ait issues — an initiative/epic vision document plus implementation specs a fresh…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
cruft-or-keep
ohnotnow
Conversational 'second pair of eyes' that finds reachable-but-dormant code in long-lived codebases — jobs, mailables, listeners, routes, commands that are…
SkillAFreshness: A★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 28, 2026 (1 month ago)
- Last release
- Oct 19, 2026 (10 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ohnotnow/agentic-stuff
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ohnotnow
- 0.592score
conversation-to-html
ohnotnow
Convert a Claude Code or Codex CLI session into a beautiful, shareable single HTML file for presentations and workshops.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
i-impeccable
ohnotnow
Create distinctive, production-grade frontend interfaces with high design quality.
SkillAFreshness: A★ 1Claude Code +9 - 0.592score
house-style
ohnotnow
Teach a personal editor agent the user's own editing taste by reading the diff between an AI-drafted document and the user's hand-edit of it, encoding the…
SkillAFreshness: A★ 1Claude Code +9 - 0.588score
audience-credibility
ohnotnow
Defensive credibility check for deliverables (reports, dashboards, demos, presentations, web pages, marketing copy) aimed at a real human audience —…
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ait-recap
ohnotnow
Generate a friendly markdown recap of recent `ait` activity for the current project, or scan a directory of projects.
SkillAFreshness: A★ 1Claude Code +9 - 0.587score
ant
ohnotnow
Local-first notebook for *why* — design decisions, alternatives rejected, pivots taken, the conversational nuance that gets lost when an issue closes.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
highlight-screenshot skill. Agent Mart. https://agentmart.dev/skills/ohnotnow-highlight-screenshot (last updated 2026-10-24)