mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
/apply drafted two documents and a tracker row from the full posting, then let the text die with the session. /outcome Step 3.2 tried to recover it by re-fetching a `source` URL the spec itself expects to be dead, and a posting pasted from an email or a PDF had no `source` to re-fetch at all. Step 6b gains item 7: write the posting verbatim to documents/applications/<company>_<role>/job_posting.md, never a re-fetch or a reconstruction from memory. The folder is derived by citing /outcome Step 1.4 rather than restating the rule, so the two cannot drift. An existing file is left alone and named in the report. Step 0 and the /scrape path (job-application-assistant SKILL.md Step 1) now retain the full posting text rather than a summary, so item 7 has something verbatim to write. Pinned by tests/test_apply_records_application.py.
This commit is contained in:
@@ -5,7 +5,7 @@ description: >
|
||||
and preparing for interviews. Triggers on keywords like: job posting, job application, CV,
|
||||
cover letter, resume, interview prep, job fit, career, application, apply, ansøgning, stilling
|
||||
allowed-tools: Read, Glob, Grep, WebFetch, WebSearch, Bash, Edit, Write, AskUserQuestion
|
||||
framework_version: 1.3.1
|
||||
framework_version: 1.3.2
|
||||
---
|
||||
|
||||
# Job Application Assistant
|
||||
@@ -18,6 +18,7 @@ When the user provides a job posting (URL or text), follow this workflow:
|
||||
|
||||
### Step 1: Research & Evaluate Fit
|
||||
- Fetch the job posting content (use WebFetch for URLs). **A 403 is not a dead end** - follow the escalation order in `09-web-research.md` before concluding a page is unavailable, and prefer the employer's own careers posting over an aggregator listing
|
||||
- Keep the **full posting text verbatim** for Step 3b to archive - never a summary
|
||||
- Analyze the posting for required competencies, keywords, and priorities
|
||||
- Research the company (website, LinkedIn, mission, recent news), per `09-web-research.md`
|
||||
- Score the posting against the candidate's profile using the framework in `04-job-evaluation.md`
|
||||
@@ -39,7 +40,7 @@ When the user provides a job posting (URL or text), follow this workflow:
|
||||
|
||||
### Step 3b: Record the Application
|
||||
- Run this once both documents exist. A CV or cover letter drafted alone is not yet an application.
|
||||
- Follow **`/apply` Step 6b** (`.claude/commands/apply.md`) exactly: same header, same match-then-update rule, same `drafted` row, same prohibition on touching `job_scraper/seen_jobs.json`. It is stated there once so the two paths cannot drift. Two of its values are named in `/apply`'s own terms: `cv_file`/`cover_letter_file` are the paths written in Steps 2 and 3 here, and `source` is the posting URL from Step 1.
|
||||
- Follow **`/apply` Step 6b** (`.claude/commands/apply.md`) exactly: same header, same match-then-update rule, same `drafted` row, same posting archive, same prohibition on touching `job_scraper/seen_jobs.json`. It is stated there once so the two paths cannot drift. Three of its values are named in `/apply`'s own terms: `cv_file`/`cover_letter_file` are the paths written in Steps 2 and 3 here, `source` is the posting URL from Step 1, and the posting text item 7 archives is the one Step 1 read.
|
||||
- This step exists here because `/scrape` Step 5 routes straight into this skill. Without it, that path writes two documents and records nothing.
|
||||
|
||||
### Step 4: Interview Preparation
|
||||
|
||||
Reference in New Issue
Block a user