read-job-offerlisted
Install: claude install-skill BluegReeno/renaud-marketplace
# Read Job Offer — Skill Instructions
## What this skill does
One job in, one JD out. Given a LinkedIn `job_id` (or any URL carrying one), return the full job
description plus the four LinkedIn classification fields, or an explicit `unavailable` verdict.
It exists so that **every** caller reads an offer the same way. The two-step cascade below was
established against a posting **32 minutes old** (`4461607259`, 2026-09-03): one call, full JD, no
login, no browser, no keychain prompt. Do not reimplement it inline in a calling skill — extend it
here.
## Input
A single value, in any of these shapes:
- a bare numeric id — `4461607259`
- a canonical URL — `https://www.linkedin.com/jobs/view/4461607259`
- a search/collection URL carrying `currentJobId=<id>`
**Step 0 — normalise.** Extract the id with `jobs/view/(\d+)`, else `currentJobId=(\d+)`, else accept
the input if it is entirely digits. If no id can be extracted, return `status: unavailable` with
`reason: no job id in input` — never guess an id, never fall back to a text search.
## Step 1 — Cached dataset (first attempt)
```
mcp__brightdata__web_data_linkedin_job_listings(
url="https://www.linkedin.com/jobs/view/<job_id>"
)
```
On success, read `job_summary` for the JD text and the response's own fields for the metadata.
This path returns clean structured JSON, but it is a **lookup in a cached dataset**: a posting that
is not yet indexed fails here, and freshly published offers are exactly the ones that are not
in