Repository navigation
v0.6.0 β the agent contract
v0.6.0 β the agent contract
Board facts stop being prose. The wire contract gets the fixes the v0.5
agent-UX review deferred. (CV tailoring moves to the v0.7.0 milestone.)
Boards as data
$ sdj boards
8 boards β select with --board <id|country>, persist with `sdj config --boards`
swissdevjobs ch SwissDevJobs CHF enabled it Β· salary
β¦
jobsch ch jobs.ch CHF enabled all-industries Β· no-salary Β· search-driven Β· no-native-apply Β· categories: it- New
list_boardsMCP tool andsdj boardscommand: scope,
currency, salary availability, search-driven, native apply, category
aliases, and enabled state β straight from the registry, per board. - The MCP
categoryenum and the CLI--categorychoices derive from
the registry (known_categories()). A future board registering a
financealias appears in every surface without touching prose. - The deprecated
countryparam drops its duplicated enum, and
annotations.titleno longer repeats the tool title β smaller
tools/list, one source of truth. - Skills and server instructions now say call list_boards instead of
hardcoding board facts that drift.
Payload contract (BREAKING for sdj list --json)
sdj list --jsonnow returns compact summary rows in an envelope,
capped at 50 by default (--limit 0= uncapped). The old output β full
raw wire rows, ~470 tokens each, uncapped β is preserved byte-for-byte
behind--raw. Migration: add--raw.- Summary rows are omit-empty: keys that are None or empty are dropped
(jobs.ch/jobup.ch rows shed six dead fields), and salary is
numeric-only βsalary_from/salary_topluscurrency, no
formatted string. - Stable MCP error codes:
unknown_selector,job_not_found, and
internal_errorreplace leaked Python class names (ValueErrorused to
cover two unrelated failures). - In-band coverage steering: search results name
boards_searchedand
carry anotewhen a search-driven board ran without a query
("returned newest postings only β pass query for coverage") β steering
that survives context compaction, unlike skill prose.
230 tests, 92.6% coverage, CI on 3.9 + 3.14.
Full Changelog: v0.5.1...v0.6.0