mic92/mics-skills
Overview
This skill lets you control a Firefox browser from the command line for web automation, scraping, testing, and interactive browser tasks. It exposes a JavaScript-based CLI execution environment with high-level actions for navigation, element interaction, snapshots, reader-mode extraction, downloads, waiting, and screenshots. Use it to script flows, inspect page state with stable refs, and integrate browser operations into pipelines or agent workflows.
How this skill works
Commands are sent to a running Firefox instance and executed in a tab context. snap() produces a readable snapshot with numeric refs you can use with click(), type(), drag(), select(), and other interaction functions. Higher-level helpers include read() for article extraction, wait() for synchronization, download() for saving assets, and shot() for screenshots. Actions return confirmations; use snap(), diff(), or logs() to inspect state and results.
When to use it
- Automated form filling and multi-step web flows
- Web scraping where human-like interactions are required (clicks, waits, drags)
- End-to-end or integration testing of web apps from the CLI
- Extracting readable article content for downstream processing
- Capturing screenshots or downloads as part of a pipeline
- Interactive debugging of page behavior using snapshots and console logs
Best practices
- Call snap() frequently to get stable refs before interacting with elements
- Prefer numeric refs from snapshot output (e.g., click(3)) for reliability over fragile selectors
- Use wait('idle') or wait('text', ...) to synchronize with dynamic content before snapping or asserting
- Use read({maxLength}) to limit extracted article size when feeding LLMs
- Store downloads to a known path and check confirmations returned by download()
- Run repetitive flows inside a single tab session to reduce overhead of opening/closing tabs
Example use cases
- Automate login and form submission: open page, snap(), type() into inputs, click submit, wait('text','Success')
- Scrape content behind interactive UI: navigate, click pagination, snap() for stable refs, extract structured text
- Convert articles to plain text at scale: navigate then read({maxLength:5000}) to get LLM-friendly content
- Visual regression or reporting: navigate, shot('/tmp/page.png') and compare images in CI
- Download assets from pages: find link href and download(url, 'invoice.pdf') to collect files programmatically
FAQ
Yes. The CLI controls a managed Firefox instance. The tool manages tabs and execution contexts but requires the browser process it controls.
How do I reliably target elements?
Use snap() to get numeric refs and then call actions with those refs. You can also use CSS selectors or text selectors when refs are not available.
3 skills
This skill lets you control Firefox from the command line to automate web tasks, inspect pages, and perform testing with simple commands.
This skill enables persistent pexpect sessions to automate interactive terminals such as ssh or databases via pexpect-cli.
This skill helps you quickly discover Deutsche Bahn train connections with departures, arrivals, durations, and transfers for planned trips.