Community translation seeds for Hover — worked examples that teach Hover's optional AI optimization pass new patterns, by few-shot rather than by hardcoding anything in core.
A seed is just one example: "when the captured steps look like this, the Playwright code should look like that." The optimization pass generalizes from it. No fork, no plugin code.
Copy any seeds/*.json into your project's .hover/rules/ directory:
mkdir -p .hover/rules
curl -o .hover/rules/download.json \
https://raw.githubusercontent.com/Hyperyond/hover-seeds/main/seeds/download.jsonHover picks it up automatically on the next optimize run. The widget's Seeds tab (Saved-sessions → Seeds) shows which seeds it currently sees.
Seeds influence generated code. Hover validates every optimized candidate (no XPath / no
waitForTimeout/ must parse) and you review it via diff before it replaces anything — but still, only add seeds you've read.
Each file matches seed.schema.json:
{
"name": "download",
"signature": ["browser_click"],
"note": "A click that triggers a file download.",
"example": {
"steps": [{ "tool": "browser_click", "element": "Export CSV button" }],
"code": "const [download] = await Promise.all([\n page.waitForEvent('download'),\n page.getByRole('button', { name: 'Export CSV' }).click(),\n]);"
}
}signature— a cheap relevance filter (Hover only feeds a seed to the pass when one of its base tools appears in the spec). Not exact-matched.code— must obey Hover's rules:getByRole/getByLabel/getByTextselectors, no XPath, nowaitForTimeout.
- Add
seeds/<name>.json(validate it againstseed.schema.json). - Add a matching entry to
index.json. - Open a PR. Keep seeds high-signal: a real, reusable pattern with clean, idiomatic Playwright.
Built-in seeds ship inside Hover itself; this repo is for the long tail the community wants to share.
| Seed | What it covers |
|---|---|
download |
A click that triggers a file download (waitForEvent('download') pairing). |
oauth-popup |
Sign-in through a provider popup that opens a new tab. |
file-upload |
Set a file on a hidden <input type=file> via the file chooser. |
Apache-2.0 © Hyperyond Studio