Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,11 @@ careercoach-plugin/
- **HTML → PDF, not LaTeX.** The upstream project's biggest tax is LaTeX page-break firefighting.
We render via the **artifact plugin** (HTML → PDF) by default — the agent can *see* the rendered
result — and keep `.tex`/moderncv as an option (with the upstream gotchas preserved, credited).
- **Native `.docx` too (`render_format: docx`).** Set it and the CV + cover letter are produced as
real, editable **Word files** via [cowork](https://github.com/protoLabsAI/cowork-plugin)'s `docx`
skill, then saved with `save_file_artifact` as **versioned, downloadable** artifacts (ADR 0092,
protoAgent v0.107.0+) — what most ATS forms actually want. Needs cowork + `execute_code` + a
v0.107.0 host; falls back to HTML→PDF otherwise. A soft pairing: no hard dependency.
- **A coach, not an autopilot.** `career-strategy` + `interview-coach` are human-in-the-loop by
design; the `apply` workflow is the opt-in "do it for me" path.
- **Gated vs. autonomous, on purpose.** The full application exists in two shapes: the `apply`
Expand Down
6 changes: 3 additions & 3 deletions protoagent.plugin.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
id: careercoach
name: Career Coach
version: 0.3.2
version: 0.4.0
description: >-
Your career coach and job-hunt copilot. Talk through strategy and positioning,
run mock interviews with honest feedback, get a straight critique of your CV,
Expand Down Expand Up @@ -30,7 +30,7 @@ config:
full_name: ""
location: ""
target_roles: ""
render_format: "html" # how CVs / cover letters are produced: html (artifact → PDF) | latex
render_format: "html" # how CVs / cover letters are produced: html (artifact → PDF) | docx (real Word file → save_file_artifact) | latex
packet_root: "" # workspace for the gated role-packet flow (Companies/<Co>/Roles/…); blank → ~/CareerCoach
jobs_api_key: ""
jobs_provider: "auto" # job source: auto (jsearch when a key is set, else remotive) | jsearch | remotive
Expand All @@ -42,7 +42,7 @@ settings:
- { key: full_name, label: "Your name", type: string, group: "Career Coach", description: "Used on generated CVs and cover letters, and to greet you on the dashboard." }
- { key: location, label: "Location", type: string, group: "Career Coach", description: "City / country and any commute constraints — feeds the location pass/fail gate in job evaluation." }
- { key: target_roles, label: "Target roles", type: string, group: "Career Coach", description: "The role types you're aiming for (comma-separated), e.g. 'ML engineer, data scientist'. Seeds strategy + search." }
- { key: render_format, label: "Document format", type: string, group: "Career Coach", description: "How CVs / cover letters are produced: 'html' renders via the artifact plugin (HTML to PDF, no LaTeX toolchain) or 'latex' for the classic moderncv .tex export." }
- { key: render_format, label: "Document format", type: string, group: "Career Coach", description: "How CVs / cover letters are produced: 'html' renders via the artifact plugin (HTML to PDF, no LaTeX toolchain); 'docx' produces a real editable Word file via the cowork docx skill and saves it as a versioned download-artifact (needs cowork + execute_code + a protoAgent v0.107.0+ host; falls back to html otherwise); 'latex' for the classic moderncv .tex export." }
- { key: packet_root, label: "Role-packet workspace", type: string, group: "Career Coach", description: "Folder where the gated role-packet flow files a folder per role (Companies/<Company>/Roles/<Role - Req>/) plus your Experience source-of-truth and story bank. Blank defaults to ~/CareerCoach. Point it at wherever you keep your job hunt so you can open and edit the artifacts directly." }
- { key: jobs_api_key, label: "Job-source API key", type: secret, group: "Career Coach", description: "Optional. A RapidAPI key for JSearch (Google-for-Jobs). With it, live job search + the watch use JSearch; without it they fall back to the keyless Remotive remote-jobs board. Stored in secrets.yaml." }
- { key: jobs_provider, label: "Job source", type: string, group: "Career Coach", description: "Which job API to use: 'auto' (JSearch when a key is set, else Remotive), 'jsearch', or 'remotive'." }
Expand Down
3 changes: 2 additions & 1 deletion skills/job-application-assistant/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ that step (progressive disclosure), don't inline them all up front:
- Start from the user's existing CV/profile; reframe *emphasis*, never fabricate (see the
honesty test in `writing-style.md`).
- Render per the operator's `render_format` (default `html` → the artifact plugin → PDF;
`latex` → moderncv `.tex`). Inspect the rendered result; iterate until it's clean.
`docx` → a real Word file via cowork's `docx` skill → `save_file_artifact`; `latex` → moderncv
`.tex`). See `cv-guide.md` for each path. Inspect the rendered result; iterate until it's clean.

### Step 3 — Write the cover letter (on request)
- Read `cover-letter-guide.md` and `writing-style.md`.
Expand Down
5 changes: 5 additions & 0 deletions skills/job-application-assistant/cover-letter-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@

- **`html`** (default) — one self-contained HTML letter with print CSS, rendered by the
artifact plugin and exported to PDF. Match the CV's font + accent so the pair looks like a set.
- **`docx`** — a real editable **Word letter** to match a docx CV. Build it with cowork's
**`docx`** skill (`load_skill('docx')`, `python-docx`), save to disk, then
**`save_file_artifact(path, title="<Name> — Cover Letter — <Company>")`** for a versioned,
downloadable file. Same requirements + fallback as the CV (`cv-guide.md`): needs cowork +
`execute_code` + a v0.107.0+ host, else fall back to `html`.
- **`latex`** — the custom `cover.cls` (Lato/Raleway, XeLaTeX); see the appendix.

### HTML letter — house style
Expand Down
8 changes: 8 additions & 0 deletions skills/job-application-assistant/cv-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,14 @@ Follow `writing-style.md` for tone and the honesty test **before** writing any b
- **`html`** (default) — build a clean, semantic one-file HTML CV with print CSS, hand it to
the **artifact plugin** to render, then export/print to PDF. The agent can *see* the rendered
result (it's a real page), so the "render → inspect → fix" loop needs no LaTeX knowledge.
- **`docx`** — a real, editable **Word file** (what many ATS forms and recruiters expect). Build
it with cowork's **`docx`** skill: `load_skill('docx')`, author the CV with `python-docx`
following the content discipline in this guide + `writing-style.md`, save it to disk, then
register it with **`save_file_artifact(path, title="<Name> — CV — <Role>")`** so it lands in the
Artifact panel as a **versioned, downloadable** file with a text preview. Needs the cowork plugin
+ `execute_code` + a protoAgent **v0.107.0+** host (which bundles the doc stack). If any is
missing, **fall back to `html` and tell the user** — never silently skip. Save a revised CV as a
new version by passing the same `artifact_id`.
- **`latex`** — produce a moderncv `.tex` (see the appendix). Use only if the user asks for it.

### HTML CV — house style
Expand Down
4 changes: 3 additions & 1 deletion skills/role-packet/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,9 @@ Read `evidence-map.md`, then `job-application-assistant`'s `cv-guide.md` and **`
(read before writing any bullet). First build the **`evidence-map`**: every JD requirement mapped to
your proof from `Experience.md` / the story bank, with gaps and stretches flagged honestly. *Then*
write the **`tailored-resume`**, drawing only on what the evidence map supports. Surface any stretch
line for the user to keep, soften, or drop. Render per `render_format` if the user wants a PDF.
line for the user to keep, soften, or drop. Render per `render_format` if the user wants a file —
`html` → PDF, or `docx` → a real Word file saved as a versioned download-artifact (see `cv-guide.md`);
the `.docx` is what most ATS forms want.

### Phase 4 — Application skills / ATS entry · *gate: confirm*
Read `ats-skills-entry.md`. Produce the **`skills-entry`** list — the discrete skills an ATS form asks
Expand Down
Loading