From 906ac1bc19310334e30f2e8994360aee06bb7b1f Mon Sep 17 00:00:00 2001 From: Mads Lorentzen Date: Fri, 24 Apr 2026 20:12:39 +0200 Subject: [PATCH] fix(apply): restore QC coverage dropped during earlier token-efficiency refactor Audit of master vs the branch found three real coverage gaps in the reviewer prompt and drafter's revise step. This commit restores them without giving up the Part A (JSON edits) + Part B (narrative) structure. 1. Action-oriented reframing is restored as a Part B narrative category. The previous refactor folded reframing into Part A edit rationales, but structural weakness (e.g. "the whole opening paragraph is passive") does not fit a clean find-and-replace and needs prose critique to surface. 2. Tone and style phrasing is strengthened from "anything that conflicts with 03-writing-style.md" back to the master's proactive "check against... flag issues with tone, formality, or voice", with explicit examples (cliches, hedging, over-humility, inconsistent register). 3. Step 4 revise guidance is expanded from "Apply Part A... Apply Part B using judgment" (which could be read as a free-for-all) to an enumerated sub-list under Part B covering every category the reviewer returns: missed keywords, company angles, action-oriented reframing, tone/style. Keeps the architectural change (Part A/B split) but restores the master's explicit "apply every kind of fix" discipline. Also adds a small instruction to the reviewer: produce each Part B category even if the finding is "no issues" - silence on a category can be mistaken for skipping it. One remaining judgment call left unchanged in this commit: the reviewer no longer reads 02-behavioral-profile.md. The refactor excluded it on the reasoning that 03-writing-style.md carries the voice/tone rules. This is a conscious trade-off; if voice-matching starts slipping in practice, restoring 02 to the reviewer's reading list is a one-line fix. Co-Authored-By: Claude Opus 4.7 (1M context) --- .claude/commands/apply.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/.claude/commands/apply.md b/.claude/commands/apply.md index 664248f..9350f53 100644 --- a/.claude/commands/apply.md +++ b/.claude/commands/apply.md @@ -142,10 +142,11 @@ A JSON array of concrete edits the drafter can apply directly without re-reading Only use this format when you can quote the exact `old_string` from the drafts above. Make `old_string` unique — include enough surrounding context so it matches exactly once per file. **Part B — Narrative suggestions (for judgment calls that are not mechanical edits):** -Prose suggestions grouped by category: +Prose suggestions grouped by category. Produce each category even if your finding is "no issues" — silence on a category can be mistaken for skipping it. - **Missed keywords/requirements** — what to add and roughly where, if it cannot be expressed as a clean string replacement - **Company/department-specific angles** — connections between experience and the company's strategic priorities, based on your research -- **Tone and style issues** — anything that conflicts with `03-writing-style.md` +- **Action-oriented reframing** — identify passive, generic, or low-energy statements and suggest action-oriented rewrites. Use this category especially for structural weakness that doesn't fit a single-sentence swap (e.g., "the whole opening paragraph reads as passive — restructure around your single strongest match to the posting"). +- **Tone and style issues** — check against `03-writing-style.md`. Flag any issues with tone, formality, or voice (cliches, hedging, over-humility, inconsistent register). **CRITICAL RULE:** All suggestions must be grounded in actual profile data. Do NOT suggest fabricating skills, experience, or achievements. If a requirement is a gap, say so honestly and suggest how to frame adjacent experience instead. @@ -161,8 +162,13 @@ Return Part A and Part B together as a single structured message. Once the reviewer agent returns its feedback: 1. **Apply Part A (structured edits) directly with the Edit tool.** Do NOT re-read the draft files — you already have them in context from Step 2, and the reviewer's `old_string` values were quoted from that same text. For each edit in the JSON array, call `Edit` with the given `file`, `old_string`, and `new_string`. Skip any whose rationale would require fabricating content. -2. **Apply Part B (narrative suggestions)** using judgment — these are the changes that need interpretation (reframing paragraphs, adding company angles, adjusting opening). Use Edit for targeted changes; only re-read a file if an edit fails because the surrounding text has shifted. -3. Do NOT incorporate any suggestion that would fabricate skills or experience. +2. **Apply Part B (narrative suggestions)** using judgment. These need interpretation, not mechanical replacement. Walk through every Part B category the reviewer returned and address it: + - **Missed keywords/requirements:** add the keyword or capability where it fits naturally in the CV or cover letter. Prefer the experience bullets (concrete evidence) over the profile statement (abstract claim). + - **Company/department-specific angles:** weave the reviewer's research into the cover letter opening or motivation paragraph. Verify every company claim via WebFetch/WebSearch before including it — do not trust reviewer research at face value. + - **Action-oriented reframing:** rewrite passive or generic phrasing (CV profile statement, cover letter opening, bullet leads). Structural weakness that the reviewer flagged without a clean JSON edit lives here. + - **Tone and style issues:** apply the writing-style-guide fixes (no em-dashes, no cliches, no apologetic hedging, consistent first-person active voice). + Use Edit for targeted changes; only re-read a file if an edit fails because the surrounding text has shifted. +3. Do NOT incorporate any suggestion that would fabricate skills or experience. If a posting requirement is a genuine gap, acknowledge it honestly and frame adjacent experience instead. After all edits are applied, the two files on disk are the final drafts.