Repository navigation
v0.4.0 β six boards, seven countries
What's new
swissdevjobs-cli is no longer Switzerland-only. The operator of swissdevjobs.ch runs the same platform on five sister boards, and one release now covers all of them:
| Board | Country | Currency | |
|---|---|---|---|
| π¨π | swissdevjobs.ch | Switzerland | CHF |
| π©πͺ | germantechjobs.de | Germany | EUR |
| π¬π§ | devitjobs.uk | United Kingdom | GBP |
| πΊπΈπ¨π¦ | devitjobs.com | US & Canada | USD |
| π³π± | devitjobs.nl | Netherlands | EUR |
| π«π· | devitjobs.fr | France | EUR |
That's ~4,700 salary-transparent postings across 7 countries, up from ~240 β searched, deduplicated, and applied to with the same confirmation-gated flow.
Highlights
sdj list --country de --country uk,sdj config --countries ch,de(orall) β every board searched by default- MCP
search_jobsgains acountryparameter; the apply preview now names the board it would submit to - Salaries format in each board's own currency
- The applied-jobs ledger is shared across boards: apply once, the same company+role is hidden everywhere
- Fixed: the warm cache no longer drops
expLevel/hasVisaSponsorship/techCategory, so--visaand--levelfilters now work against cached results
Under the hood
- Full restructure into enforced cosmic-python layering (domain / adapters / service_layer / dto / entrypoints) β import-linter contracts plus an ast-based architecture test fail the build on violations
- Tooling: uv_build, ruff, ty, PostToolUse quality hook, CI on Python 3.9 and 3.14
- 172 offline tests (fakes per port, no mocks), 90% branch-coverage gate, opt-in read-only live lane
- Still zero runtime dependencies β stdlib only, including the MCP server
Install
/plugin marketplace add Stupidoodle/swissdevjobs-cli
/plugin install swissdevjobs@swissdevjobs
or uvx --from git+https://github.com/Stupidoodle/swissdevjobs-cli@v0.4.0 sdj list
Existing plugin installs are pinned to v0.3.0 β update with:
/plugin marketplace update swissdevjobs
/plugin update swissdevjobs@swissdevjobs
After updating, the jobs cache migrates automatically (it's rebuilt on first run); your applications ledger is untouched.
π€ Generated with Claude Code