apply-to-offerlisted
Install: claude install-skill BluegReeno/renaud-marketplace
# Apply To Offer — Skill Instructions
## What this skill does
One offer in, one CV and one logged candidature out — for an offer Renaud found during the day
rather than in the morning digest.
It is deliberately **thin**. It owns no judgement: `read-job-offer` reads, `cv-log-worker` decides
and produces, `log-application` records. Its value is being a trigger and a dedup gate. Anything
else it starts doing is duplication of the morning path, which is the exact drift this skill exists
to prevent.
## Step 1 — Resolve what Renaud pasted
Accept any of: a `linkedin.com/jobs/view/<id>` URL, a search URL carrying `currentJobId=<id>`, a
bare numeric `job_id`, or a URL on another job board.
- **LinkedIn** → extract the `job_id` and build `JOB_URL` as
`https://www.linkedin.com/jobs/view/<job_id>`.
- **Another board** → keep the URL as `JOB_URL`. `read-job-offer` only covers LinkedIn, so say
plainly that the JD cannot be auto-read, and ask Renaud to paste the offer text. Do **not**
invent a JD from the page title.
- **Nothing resolvable** → ask for the link. Never guess an id.
## Step 2 — Read the offer
Invoke `Skill(read-job-offer)` with the resolved `job_id` or URL. Keep `title`, `company`,
`jd_text`, `freshness` and `applicant_count`.
If it returns `status: unavailable`, stop and say so, naming the reason it gave. Offer the fallback:
Renaud pastes the offer text, and this skill passes it through as `JD_TEXT`. Never continue with a
partial read.
## Step 3 — Dedup agains