* fix(scrape): send one plain term per CLI call and make portals state their query syntax (#536)
search-queries.md is written in Google syntax, and Step 1b said to
translate its terms into portal flags without saying that OR and quotes
do not survive the translation.
- job-scraper Step 1b: one plain term per CLI call, never OR or a
combined string; results merge across calls (Step 2 dedups on URL).
Quoting follows the portal's own SKILL.md.
- Portal SKILL.md files carry a one-line "Query syntax:" note;
/add-portal asks the generator to write it for new portals.
- search-queries.md: site: blocks are labelled WebSearch-only and each
priority gains a plain-terms block for the CLIs.
- tests/test_scrape_contract.py: every installed portal SKILL.md must
carry the Query syntax line; the portal list is derived from the
skills tree.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(scrape): fall back to site: terms for placeholder blocks; update freehire query syntax
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: drop the CHANGELOG hunk, frozen by #800 (release notes come from the PR title)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(scrape): dedup the pool by URL before Step 2 and give each portal's literal quote form
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
* fix(add-portal): compare the portal's reported total, not capped rows, when probing query syntax
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>