mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-11-02 13:12:50 +00:00
fix(reset): keep the Languages table header under Identity in the candidate-profile skeleton (#613)
04-job-evaluation.md's Language Gate and job-scraper/search-queries.md's query-language generation both read "your Languages table" from 01-candidate-profile.md, but the skeleton /reset wrote left "## Identity" empty, so after a reset /rank and /scrape looked for a table the file no longer had. Carry "### Languages" and the table's header and separator rows in the skeleton. The test derives both rows from the shipped file and pins that the placeholder data row is not reintroduced; it fails on master. Follow-up noted on #532.
This commit is contained in:
1 parent
baf8c68e53
commit
709339758a
3 files changed
+36
No files matched your search
@@ -149,6 +149,11 @@ Every skill file under `.claude/skills/job-application-assistant/` opens with a
|
||||
|
||||
## Identity
|
||||
|
||||
### Languages
|
||||
|
||||
| Language | Level | Notes |
|
||||
|----------|-------|-------|
|
||||
|
||||
## Education
|
||||
|
||||
## Professional Experience
|
||||
|
||||
@@ -68,6 +68,15 @@ per-file diff commands.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`/reset profile` keeps the `### Languages` table header under Identity**
|
||||
(`.claude/commands/reset.md` Step 3, `tests/test_reset_command.py`) - `04-job-evaluation.md`'s
|
||||
Language Gate and `job-scraper/search-queries.md`'s query-language generation both read "your
|
||||
Languages table" from `01-candidate-profile.md`, but the skeleton `/reset` wrote left
|
||||
`## Identity` empty, so after a reset `/rank` and `/scrape` looked for a table the file no
|
||||
longer had. The skeleton now carries `### Languages` and the table's header and separator
|
||||
rows, derived from the shipped file in the test; the placeholder data row is deliberately
|
||||
not reintroduced. Follow-up noted on #532.
|
||||
|
||||
- **`05-cv-templates.md` snippets write the `\cventry` date argument with an ASCII hyphen, as the same
|
||||
file's own rule requires** (`.claude/skills/job-application-assistant/05-cv-templates.md`,
|
||||
`framework_version: 1.4.6 -> 1.4.7`) - the in-progress-qualification snippet under "In-progress
|
||||
|
||||
@@ -252,6 +252,28 @@ class TestResetTargetsTheHeadingsTheShippedFilesHave(unittest.TestCase):
|
||||
f"a reset must leave {filename}'s framework_version readable and unchanged",
|
||||
)
|
||||
|
||||
def test_candidate_skeleton_keeps_the_languages_table_under_identity(self):
|
||||
# 04-job-evaluation.md's Language Gate and job-scraper/search-queries.md
|
||||
# both read "your Languages table" from 01-candidate-profile.md. The
|
||||
# skeleton had `## Identity` with nothing under it, so after a reset the
|
||||
# gate and the scraper looked for a table the file no longer had. Both
|
||||
# the `### Languages` heading and the table header row are derived from
|
||||
# the shipped file; the placeholder data row is deliberately not kept.
|
||||
shipped = (SKILL_DIR / "01-candidate-profile.md").read_text(encoding="utf-8")
|
||||
start = shipped.index("### Languages")
|
||||
header_rows = [
|
||||
line for line in shipped[start:].splitlines()[1:]
|
||||
if line.startswith("|")
|
||||
][:2]
|
||||
self.assertEqual(len(header_rows), 2, "the shipped Languages table must have a header and a separator row")
|
||||
block = skeleton_block(self.reset, "01-candidate-profile.md")
|
||||
identity = block[block.index("## Identity"): block.index("## Education")]
|
||||
self.assertIn("### Languages", identity, "the Languages table must sit under Identity, as shipped")
|
||||
for row in header_rows:
|
||||
with self.subTest(row=row):
|
||||
self.assertIn(row, identity)
|
||||
self.assertNotIn("[LANGUAGE]", block, "a reset must not reintroduce a placeholder data row")
|
||||
|
||||
def test_partial_anchors_exist_in_the_files_they_target(self):
|
||||
# (reset.md anchor phrase, file, heading the replacement must re-emit)
|
||||
cases = (
|
||||
|
||||
Reference in new issue
Block a user