{"id":"99601785-b5c9-4351-8c9c-d987f8c851c7","slug":"jobs-cli","kind":"skill","name":"jobs-cli","summary":"Agent-native job search and application CLI","owner":"thedavidweng","repoUrl":"https://github.com/thedavidweng/jobs-cli","license":"Apache-2.0","licenseTier":"permissive","trust":"community","stars":3,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-09-26T07:08:12.000Z","addedAt":"2026-10-21T23:54:01.173Z","logoUrl":"https://avatars.githubusercontent.com/u/95214375?u=d5680f1f36539c25416c3c8d6ce17f266d3dc5c7&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["search"],"tags":[],"runtime":"go","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-26T02:34:12.231Z","sample":false,"url":"https://conduits.dev/tools/jobs-cli","language":"Go","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<h1 align=\"center\">jobs-cli</h1>\n\n<p align=\"center\">\n  Agent-friendly CLI for finding jobs on Indeed and LinkedIn and applying from the terminal.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/thedavidweng/jobs-cli/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/thedavidweng/jobs-cli/ci.yml?branch=main&style=flat-square&label=ci\" alt=\"CI\"></a>\n  <a href=\"https://github.com/thedavidweng/jobs-cli/releases\"><img src=\"https://img.shields.io/github/v/release/thedavidweng/jobs-cli?style=flat-square\" alt=\"Release\"></a>\n  <a href=\"https://github.com/thedavidweng/jobs-cli/blob/main/LICENSE\"><img src=\"https://img.shields.io/github/license/thedavidweng/jobs-cli?style=flat-square\" alt=\"License\"></a>\n  <img src=\"https://img.shields.io/badge/go-%3E%3D1.27-blue?style=flat-square\" alt=\"Go\">\n</p>\n\n`jobs-cli` is a single-binary CLI that searches Indeed, LinkedIn, YZi Talent, CivicInfo BC, and TransLink, finds the application provider behind each job (Greenhouse, Lever, Workday, and others), and submits your application from the terminal when the provider supports it. When it doesn't, you get the link to apply in a browser.\n\n## Highlights\n\n- Agent-first: stable JSON output with `--json`, distinct stdout/stderr, and predictable exit and error codes\n- Safety-first: `--read-only`, `--dry-run`, and `--confirm` gates, so no application is sent without `--confirm`\n- Search without logging in: Indeed and LinkedIn in one command, and if one source fails, the other still returns results\n- Finds where to apply: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, iCIMS, or the employer's own site\n- Applies from the terminal: inspect the form, prepare an application you can review, fill Workday in an explicitly connected browser, stop at review, then confirm submission; Greenhouse API submission requires an employer key\n- Single binary for discovery and API operations; Workday requires a running Chrome-compatible browser with an explicit local CDP connection\n\n## Why\n\nJob boards and application forms are built for browsers, and every employer's form is different. `jobs-cli` treats where you find a job and where you apply as separate steps, so scripts and agents can search, find the right application provider, and apply through one stable set of commands.\n\n## Quickstart\n\n### Install\n\nRun the following on macOS or Linux:\n\n```shell\ncurl -fsSL https://raw.githubusercontent.com/thedavidweng/jobs-cli/main/install.sh | sh\n```\n\nRun the following on Windows:\n\n```shell\npowershell -ExecutionPolicy ByPass -c \"irm https://raw.githubusercontent.com/thedavidweng/jobs-cli/main/install.ps1 | iex\"\n```\n\nOn macOS and Linux, the installer detects Homebrew and uses it when available (recommended for easy upgrades). Otherwise it downloads the binary to `~/.local/bin`. On Windows, it installs to `%LOCALAPPDATA%\\jobs-cli\\bin`.\n\n**AI agents:** paste this into an agent that has its own persistent computer. It installs the [`jobs-cli` skill](skills/jobs-cli/SKILL.md) and the CLI.\n\n```text\nRead https://github.com/thedavidweng/jobs-cli/blob/main/skills/jobs-cli/SKILL.md and set up jobs-cli\n```\n\n<details>\n<summary>Other installation methods</summary>\n\n**Homebrew Cask (macOS/Linux):**\n\n```shell\nbrew install --cask thedavidweng/tap/jobs-cli\n```\n\n**Go:** requires the Go version in [`go.mod`](go.mod). Distro packages often lag behind, so get Go from [go.dev/dl](https://go.dev/dl/).\n\n```shell\ngo install github.com/thedavidweng/jobs-cli/v2/cmd/jobs-cli@latest\n```\n\n`go install` builds may show `commit: none` in `jobs-cli version`. Release archives and the Homebrew cask carry full build metadata.\n\n**Manual download:** grab the archive for your platform, including Windows, from the [latest GitHub Release](https://github.com/thedavidweng/jobs-cli/releases/latest), check it against `checksums.txt`, extract it, and place the `jobs-cli` binary on your `PATH`.\n\n**Build from source:**\n\n```shell\n# Latest main through Homebrew\nbrew install --HEAD thedavidweng/tap/jobs-cli\n\n# Or build it yourself\ngit clone https://github.com/thedavidweng/jobs-cli.git\ncd jobs-cli\ngo build ./cmd/jobs-cli\n```\n\n</details>\n\n### Set up\n\n```shell\njobs-cli doctor\n```\n\n`doctor` checks your installation, config, and session, and `jobs-cli sources status` shows what each source and application provider supports. Search works without an account. To turn on the signed-in LinkedIn features (job details, signed-in search, and Easy Apply forms), log in once:\n\n```shell\njobs-cli auth linkedin login\n```\n\nThen try it:\n\n```shell\n# Search Indeed and LinkedIn\njobs-cli search --query \"backend engineer\" --location \"Vancouver, BC\"\n\n# Show a job from the results and find its application provider\njobs-cli show indeed:<id> --resolve\n\n# Read the application form, then prepare an application (nothing is sent)\njobs-cli apply inspect indeed:<id>\njobs-cli apply prepare indeed:<id> --manifest application.json --out artifact.json\n\n# Submit it (this sends a real application)\njobs-cli apply submit --artifact artifact.json --confirm\n```\n\nIndeed searches one country at a time. End `--location` with a US state, Canadian province, or country, pass `--country`, or set a default in the [configuration](COMMANDS.md#configuration). Otherwise the Indeed results fail with `MARKET_REQUIRED`. Add `--json` to any command for machine-readable output.\n\nIndeed discovery requires no login. Indeed-hosted applications resolve with `browser_required=true` and an application URL for you to continue manually in a browser; native submission reports `BROWSER_REQUIRED`. [Indeed's Job Seeker Terms](https://www.indeed.com/legal?co=US&hl=en) prohibit automating Indeed Apply outside its official vendors and tooling. Any proposal to automate this flow must first establish a new architecture decision (ADR) and review the terms; browser extensions, native-messaging hosts, and DOM auto-submit are outside the current product scope.\n\n### Portfolio and BC sources\n\n```shell\njobs-cli search --source yzi --remote\njobs-cli search --source civicinfo --query \"analyst\"\njobs-cli search --source translink --query \"engineer\"\njobs-cli show translink:<id> --resolve\n```\n\nYZi and TransLink discovery have been checked live. CivicInfo's parser is tested,\nbut direct requests currently receive Cloudflare HTTP 403. YZi and PeopleSoft\napplications return browser routing; CivicInfo jobs route to employer application\nsites. See the [board reference](COMMANDS.md#portfolio-and-bc-boards) for dates,\nfilters, pagination, and verification limits.\n\n### Uninstall\n\n```shell\n# Homebrew Cask\nbrew uninstall --cask thedavidweng/tap/jobs-cli\n\n# install.sh\ncurl -fsSL https://raw.githubusercontent.com/thedavidweng/jobs-cli/main/install.sh | sh -s uninstall\n\n# install.ps1 (Windows)\npowershell -ExecutionPolicy ByPass -c \"& ([scriptblock]::Create((irm https://raw.githubusercontent.com/thedavidweng/jobs-cli/main/install.ps1))) uninstall\"\n\n# Go\nrm \"$(go env GOPATH)/bin/jobs-cli\"\n```\n\nRemove local data if desired: `rm -rf ~/.jobs-cli` (on Linux, `~/.config/jobs-cli`, and on Windows, `%APPDATA%\\jobs-cli`). This deletes your config and LinkedIn session.\n\n## Documentation\n\n**Reference:**\n\n- [Command Reference](COMMANDS.md): every command, flag, and exit code\n- [Configuration](COMMANDS.md#configuration): config file, profiles, and `JOBS_*` environment variables\n- [JSON Schema](JSON_SCHEMA.md): success and error envelopes, common objects, and error codes\n- [Session Format](docs/session-format.md): the LinkedIn session file\n- [Agent Skill](skills/jobs-cli/SKILL.md): setup and usage guide for AI agents\n- [Releasing](docs/releasing.md): how Release Please and GoReleaser publish a release\n- [Contributing](CONTRIBUTING.md): development setup and contribution guidelines\n\n**Explanation:**\n\n- [Safety Model](COMMANDS.md#safety-model): how `--read-only`, `--dry-run`, and `--confirm` gate every submission\n- [Specification](docs/spec.md): product scope and behavior\n- [Glossary](CONTEXT.md): domain terms such as Source and Application Provider\n- [Architecture Decisions](docs/adr/): the ADRs behind the design\n\n## Disclaimer\n\n`jobs-cli` is an independent, community-maintained project and is **not affiliated with, sponsored by, or endorsed by LinkedIn, Indeed, or any application provider it supports.**\n\n## Infrastructure\n\n- **CI/CD:** GitHub Actions + [mise](https://mise.jdx.dev/)\n- **Releases:** [Release Please](https://github.com/googleapis/release-please) + [GoReleaser](https://goreleaser.com/), published to GitHub Releases and the [Homebrew tap](https://github.com/thedavidweng/homebrew-tap)\n\n## License\n\n[Apache License 2.0](LICENSE)\n"}