I build test automation, developer tooling, and AI agent skills β and I like fixing the tools everyone else relies on. You'll find my merged PRs in Playwright, Selenium, WebdriverIO, Vitest, axe-core and other major testing projects, plus my own packages on npm and skills for AI coding agents.
Merged pull requests in some of the biggest testing & tooling projects:
Skills and tools I've built for AI coding agents (Claude, MCP-compatible assistants):
| Project | What it does |
|---|---|
| flaky-test-scorer-ai-skill | AI agent skill that scores and ranks flaky tests from CI pass/fail history, using version-aware entropy and flip-rate models (inspired by Apple's ICSE-SEIP 2020 flaky-test ranking paper) |
| worked-example-teaching | Claude skill that teaches one technical concept end-to-end by grounding the explanation in your actual artifact (command, file, error, or config) and walking through a single complete worked example |
| ai-reachability-snapshot | Augments Playwright accessibility snapshots with reachability metadata so AI/MCP agents know which elements are actually interactable (reachableSnapshot()) β filters off-screen, covered, and hidden nodes |
| mcp-accessibility-scanner | MCP server that lets AI assistants run WCAG accessibility audits on any page with Playwright + axe-core |
| skills_setup | Versioned export of my installed agent skills, split by tool (Claude & Codex) |
Plus a merged Appium troubleshooting skill in appium/skills.
| Package | Downloads | About |
|---|---|---|
| mcp-accessibility-scanner | MCP server for automated accessibility scans with Playwright + axe-core | |
| appium-session-recorder | Interactive Appium session recorder with a modern UI | |
| jm-playwright-args | Pass custom CLI arguments into Playwright config and tests | |
| jm-wdio-failed-rerun-runner | WebdriverIO runner that reruns only the tests that failed in the initial run | |
| jm-wdio-mocha-split-runner | Experimental intra-spec parallel launcher for WebdriverIO | |
| i18n-string-check | Fast CI checker for hardcoded i18n strings (written in Go) | |
| npx-vet | Inspect an npm package's trust evidence before npm exec/npx runs it |
|
| @justasmonkev/pkg-rust | Rust port of pkg β bundle a Node.js project into a single executable |
|
| jm-playwright-chrome-ui | Chrome extension UI helpers for Playwright |
- mcp-accessibility-scanner β β MCP server that lets AI assistants run WCAG accessibility audits on any webpage using Playwright and axe-core. My most popular package on npm.
- npx-vet (npm) β Vets an npm package's trust signals (provenance, signatures, maintainer & version history, download stats) before
npm exec/npxruns it, and blocks high-risk packages unless explicitly overridden. - @justasmonkev/pkg-rust (npm) β A Rust port of
pkgthat compiles a Node.js project into a single self-contained executable, shipped with prebuilt macOS x64/arm64 native binaries. - appium-session-recorder β Record and replay Appium mobile testing sessions interactively.
- i18n-string-check β Go-powered CI tool that catches hardcoded strings in TypeScript/JavaScript codebases.




