CI runs `bun install` (not --frozen-lockfile) and the CLIs' package.json pinned @types/bun, @bunli/core, and @bunli/utils to "latest", so each fresh install could resolve a different version than the lockfile. When a "latest" bun-types resolved that didn't satisfy the tsconfig (lib: ["ESNext"] with no DOM, types: ["bun-types"] as the only source of Response/URL/fetch globals), `bun run typecheck` failed across every .ts file - a transient red on PRs that never touched TypeScript (observed on #207, which changes only SKILL.md). Pin the three previously-floating dev/framework deps to the versions the lockfiles already resolve, so behavior is unchanged and the drift class is gone: - @types/bun: latest -> 1.3.14 (all 6 CLIs) - @bunli/core: latest -> 0.9.1 (jobbank, jobdanmark, jobindex, jobnet) - @bunli/utils: latest -> 0.6.0 (jobbank, jobdanmark, jobindex, jobnet) The ^-ranged deps (node-html-parser, zod, typescript) are left as-is; they are semver-guarded and were not the cause. No lockfiles committed (bun.lock stays gitignored per existing policy). Verified: all 6 CLIs install and `bun run typecheck` clean with the pins. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
linkedin-cli
CLI for searching jobs on LinkedIn's public job listings, for any country/region (and remote), across any sector.
Data source: LinkedIn jobs-guest endpoints (seeMoreJobPostings/search and jobPosting/<id>).
Authentication: None required.
Dependencies: None (plain bun + fetch). bun install is optional and only pulls dev type defs.
Personal use only. This uses LinkedIn's public job pages; automated access is against LinkedIn's Terms of Service. Keep volume low, don't use it commercially or for bulk data collection, and run it on your own responsibility.
Installation
cd .agents/skills/linkedin-search/cli
bun install # optional — only installs TypeScript dev types
The CLI runs without any install because it has zero runtime dependencies.
Commands
| Command | Description |
|---|---|
search |
Search for job listings (--location required) |
detail |
Fetch full detail for a single job listing |
search accepts --format json|table|plain (default json); detail accepts --format json|plain.
All errors are written to stderr as { "error": "...", "code": "..." } with exit code 1.
Quick examples
# Software roles in Hyderabad, last 7 days
bun run src/cli.ts search -q "backend engineer" -l "Hyderabad, Telangana, India" --jobage 7 --format table
# Design roles in London
bun run src/cli.ts search -q "product designer" -l "London, United Kingdom" --format table
# Fully remote
bun run src/cli.ts search -q "technical writer" -l "Remote" --remote remote --format table
# Full detail for one job
bun run src/cli.ts detail 4426311357 --format plain
See ../SKILL.md for the full flag reference and the Terms-of-Service note.
Search flags
| Flag | Alias | Description |
|---|---|---|
--location |
-l |
Required. Place string, e.g. "Mumbai, Maharashtra, India", "Berlin, Germany", "Remote". |
--query |
-q |
Keywords (title / skill / role). Recommended. |
--jobage |
Posted within N days: 1, 7, 14, 30. |
|
--remote |
remote | hybrid | onsite. |
|
--page |
1-indexed page (10 results/page). | |
--limit |
-n |
Cap results emitted. |
--format |
json | table | plain. |