code-assist
Guides implementation of code tasks using test-driven development in an Explore, Plan, Code, Commit workflow. Acts as a Technical Implementation Partner and…
Browser automation via Playwriter (remorses) using persistent Chrome sessions and the full Playwright Page API.
$ npx -y skills add mikeyobrien/ralph-orchestrator --skill playwriter --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/playwriterContext preview
The summary Claude sees to decide when to auto-load this skill.
Browser automation via Playwriter (remorses) using persistent Chrome sessions and the full Playwright Page API.
name: playwriter description: Browser automation via Playwriter (remorses) using persistent Chrome sessions and the full Playwright Page API. hats: [developer, qa_tester] metadata: internal: true
Use Playwriter to run Playwright Page scripts against your local Chrome session. This preserves logins, cookies, and extensions, which is ideal for web dashboard testing and authenticated flows.
npm i -g playwriter
1. Create a session:
playwriter session new
2. List sessions and copy the session id:
playwriter session list
3. Execute Playwright code against that session:
playwriter -s <session_id> -e "await page.goto('https://example.com')"Within `-e`, these are available in scope:
Example state persistence:
playwriter -s <session_id> -e "state.lastUrl = page.url()" playwriter -s <session_id> -e "console.log(state.lastUrl)"
playwriter -s <session_id> -e "await page.goto('http://localhost:3000'); await page.getByRole('button', { name: 'Run' }).click();"playwriter -s <session_id> -e "await page.getByLabel('Email').fill('qa@example.com'); await page.getByLabel('Password').fill('secret'); await page.getByRole('button', { name: 'Sign in' }).click();"playwriter -s <session_id> -e "const { screenshotWithAccessibilityLabels } = require('playwriter'); await screenshotWithAccessibilityLabels(page, { path: '/tmp/a11y.png' });"playwriter -s <session_id> -e "await page.route('**/api/**', async route => { const res = await route.fetch(); const body = await res.json(); await route.fulfill({ json: { ...body, injected: true } }); });"playwriter -s <session_id> -e "const text = await page.locator('main').innerText(); console.log(text);"A hat-based orchestration framework that keeps AI agents in a loop until the task is done. "Me fail English? That's unpossible!" - Ralph Wiggum
Repo: mikeyobrien/ralph-orchestrator
Guides implementation of code tasks using test-driven development in an Explore, Plan, Code, Commit workflow. Acts as a Technical Implementation Partner and…
Generates structured .code-task.md files from descriptions or PDD implementation plans. Auto-detects input type, creates properly formatted tasks with…
Use when testing Ralph's hat collection presets, validating preset configurations, or auditing the preset library for bugs and UX issues.
Lists all code tasks in the repository with their status, dates, and metadata. Useful for getting an overview of pending work or finding specific tasks.
Transforms a rough idea into a detailed design document with implementation plan. Follows Prompt-Driven Development — iterative requirements clarification,…
Use when creating animated demos (GIFs) for pull requests or documentation. Covers terminal recording with asciinema and conversion to GIF/SVG for GitHub…