| name | take-doc-screenshots |
| description | Take screenshots of the running pgconsole app for documentation. Use when updating docs with screenshots or adding images to .mdx files. |
| disable-model-invocation | false |
| argument-hint | ["page-or-feature"] |
Take Documentation Screenshots
Capture screenshots of the running pgconsole app at http://localhost:5173 for use in documentation.
Prerequisites
- The dev server must be running (
pnpm dev)
shot-scraper must be installed (pipx install shot-scraper && shot-scraper install)
cwebp must be installed (brew install webp)
Authentication
Login credentials are in pgconsole.toml under [[users]]. Use the first user entry.
- Read
pgconsole.toml to find the email and password from the first [[users]] entry
- Call the login API to get a session token:
curl -s -c cookies.txt -X POST http://localhost:5173/api/auth/login \
-H 'Content-Type: application/json' \
-d '{"email":"<email>","password":"<password>"}'
- Extract the
pgconsole_token cookie value from cookies.txt
- Create a Playwright auth state JSON file:
{
"cookies": [{
"name": "pgconsole_token",
"value": "<token>",
"domain": "localhost",
"path": "/",
"httpOnly": true,
"secure": false,
"sameSite": "Lax"
}],
"origins": []
}
Taking Screenshots
Write a Playwright script (.mjs file in the scratchpad directory) that:
- Launches Chromium with
viewport: { width: 1440, height: 900 } (no deviceScaleFactor — use 1x)
- Sets the auth cookie via
context.addCookies()
- Navigates to
http://localhost:5173
- Uses Playwright actions (click, type, keyboard) to navigate to the desired state
- Saves screenshots as PNG
CodeMirror Interaction
The SQL editor uses CodeMirror 6. To type into it:
- Click
.cm-content to focus
- Use
page.keyboard.type('SQL here', { delay: 5 }) to type
- Use
page.keyboard.press('Control+Space') for autocomplete
- Use
page.keyboard.press('Meta+a') to select all before replacing content
- Do NOT try to access
cmView from the DOM — it's not exposed
UI Navigation
Key buttons to interact with:
button with text SQL — opens a new query tab
button with text Run — executes the query
button with text Format — opens format dropdown
button with text Quick SQL — opens quick SQL dropdown
button with text Processes — opens processes modal
- Right-click on
.cm-content for context menu
Dismissing Overlays
After capturing dropdown/modal screenshots, always dismiss with:
await page.keyboard.press('Escape');
await page.waitForTimeout(500);
An open overlay blocks clicks on other elements.
Image Processing
- Convert PNGs to WebP:
cwebp -q 90 input.png -o output.webp
- Store in
docs/images/features/<feature-name>/ (matching docs/features/<feature-name>.mdx)
- Reference in MDX as

- Clean up temporary PNG files after conversion
Image Convention
- Format: WebP (
.webp), quality 90
- Dimensions: 1440x900 (1x resolution)
- Location:
docs/images/ mirroring the docs/ structure
- Naming:
<feature>-<description>.webp (e.g., sql-editor-autocomplete.webp)
- Alt text: brief description of what the screenshot shows