F03 — application records
- Quota already removed with F02's tracker; verified uncapped and that
"interview reached" survives a later withdrawal.
- Aker BP: application date confirmed 2026-07-29 by the user, settling the
one-day conflict. Its Adjacent-despite-79 classification is kept, NOT
reclassified: the user does not remember the rationale and judged it
immaterial on a closed role, and silently reclassifying to make the
arithmetic tidy is the exact objection the review raised. Recorded as an
explicit override reason with a rubric version instead.
F04 — rule hierarchy
- Three levels stated in AGENTS.md and CLAUDE.md: immutable evidence rules,
standing user preferences, market/employer presentation.
- Deliverables separated from QA. The .tex stays the artefact of record; you
still compile, into the application's own output/ folder, because the user
cannot approve what he cannot open.
- `resume_reference.md` said "Capgemini/Bundeswehr: include only when directly
relevant", contradicting the standing never-include rule. Split and fixed.
F05 — a green validator now means something
- Per-claim `forbidden` wording is enforced. 14 of 26 claims carried such a
list and NONE of it was checked, which is why "owned the full ML lifecycle"
passed. Matching tolerates inserted adjectives: the real regression read
"Built a decentralized Data Mesh" and one word defeated the literal list.
- Added identity (e-mail/phone), employer-date, placeholder and
document-exclusion checks. Capgemini's omission rule now has a canonical
home in claims.json instead of living only in memory and config.md.
- Registered Groovy and Snowflake as forbidden skills. Both were absent from
claims.json entirely, so "forbidden" existed in prose with nothing enforcing
it.
- PASS no longer reads as a truth certificate: it prints what it did not check
— scope implications, bullet-to-claim support, whether a number is real.
F06 — the scanner stopped fighting the documents
- LaTeX comments are no longer claims; `% never claim Terraform` was a finding
before, which taught the workflow to write around the checker.
- Markup, accent macros and umlauts are normalized, so `\textbf{Snow}flake`
cannot smuggle a forbidden skill past a substring test and
`Universit\"at der Bundeswehr M\"unchen` is recognisably a school.
- Honest denials pass in English and German.
- The triple-list cadence hint knew only English "and", so it silently did
nothing on every German package. Advisory only, and now labelled as such.
Verification
- The six counter-proofs from the report are caught: 9 errors on one synthetic
document, where the old scanner found none.
- All six packages built under current rules scan clean — SBB, NVIDIA, RUAG,
Kdo Cy, Citadel, Aker BP. Four false positives of my own were found and fixed
on the way there; each is now a regression test.
- 13 older packages do report findings. Those look like genuine historical
violations and are deliberately NOT fixed here: F17 governs archives and they
must not be silently rewritten.
- `tests/test_document_scanner.py` added. Full suite 31/31 pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qej5SBvhcbGXHwLqNWiskM
188 lines
11 KiB
Markdown
188 lines
11 KiB
Markdown
# Codex-resume-kit — Project Instructions
|
||
|
||
> This file is auto-loaded by Codex. It provides project-wide rules for all skills.
|
||
|
||
---
|
||
|
||
## File Map
|
||
|
||
```
|
||
.agents/skills/
|
||
├── setup-extract/SKILL.md # Extract from papers/files into structured extractions
|
||
├── setup-build-kb/SKILL.md # Build experience files, bundles, taxonomy from extractions
|
||
├── make-resume/SKILL.md # Phase 0-2: JD research → bullet plan → resume/CV generation
|
||
├── make-cl/SKILL.md # Cover letter generation from session file
|
||
├── edit-resume/SKILL.md # Edit resume/CV from critique or user feedback
|
||
└── critique/SKILL.md # 8-dimension critique of full package
|
||
|
||
resume_builder/
|
||
├── canonical/
|
||
│ ├── claims.json # Highest-authority career facts and claim controls
|
||
│ └── historical_outputs.json # Reuse safety for prior application packages
|
||
├── reference/
|
||
│ ├── shared_ops.md # Session startup, derivation, workflow — ALL skills
|
||
│ ├── resume_reference.md # Resume/CV rules — /make-resume, /edit-resume
|
||
│ ├── cl_reference.md # CL rules — /make-cl, /edit-resume (CL edits)
|
||
│ ├── critical_rules.md # Compact re-read — /make-resume Phase 2
|
||
│ ├── session_file_template.md # Session file format
|
||
│ ├── critique_framework.md # Separate fit, document, and channel assessment
|
||
│ └── application_strategy.md # Targeting and cohort strategy
|
||
├── templates/ # LaTeX .cls + .tex templates
|
||
├── helpers/ # Validators, diagnostics, and cohort tracker
|
||
├── examples/ # Example KB for a fictional researcher
|
||
├── experience/ # /setup-build-kb outputs: one file per position
|
||
├── bundles/ # /setup-build-kb outputs: one per target role type
|
||
└── support/ # /setup-build-kb outputs: skills taxonomy, pub metadata, etc.
|
||
|
||
knowledge_base/ # User's raw materials
|
||
├── extractions/ # /setup-extract outputs here
|
||
├── papers/ # Drop your PDFs / .tex source here
|
||
└── notes/ # Any other reference material
|
||
|
||
config.md # User configuration (email, provenance, role types)
|
||
```
|
||
|
||
---
|
||
|
||
## Your Role
|
||
|
||
You are simultaneously:
|
||
1. **Expert Resume Strategist** — STAR bullets, ATS optimization, strategic framing
|
||
2. **Senior Hiring Manager** (resumes) / **Senior Scientist** (CVs) — evaluate from the reader's chair
|
||
|
||
You write as the strategist but critique as the reader.
|
||
|
||
**Rule hierarchy.** When two instructions conflict, the higher level wins. State which level
|
||
you are applying when you deviate.
|
||
|
||
1. **Evidence rules (immutable).** Anti-fabrication, Scope Discipline, provenance, verb discipline,
|
||
`claims.json` as highest authority. These are never overridden by a JD, a market convention or a
|
||
user styling preference. **Accuracy > Relevance > Impact > ATS > Brevity.**
|
||
2. **Standing user preferences.** Recorded in `config.md` and the KB Corrections Log — e.g. Capgemini
|
||
is omitted from every document and the resulting gap is intentional. Changed only by the user.
|
||
3. **Market and employer presentation.** Profile choice (International Tech vs Swiss/DACH), section
|
||
order, language, cover-letter convention. Adapt these per target; they never license a level-1 or
|
||
level-2 breach.
|
||
|
||
**Deliverables vs QA — these are different things and were previously conflated:**
|
||
- **The `.tex` is the deliverable and the source of truth.** Never hand over a PDF as the artefact of
|
||
record, and never edit a PDF in place.
|
||
- **You still compile.** Run `validate_resume_system.py`, compile with the local LaTeX distribution,
|
||
and inspect the rendered pages before calling anything finished — a clean box count is not a
|
||
visual check.
|
||
- **Compile into the application's own `output/` folder**, not a temp directory, so the user can
|
||
review what he is approving (`config.md` Output Rules; rule added after a package shipped with no
|
||
reviewable PDF on 2026-08-27). "Output .tex only" means the .tex is authoritative, **not** that the
|
||
user should be handed nothing to look at.
|
||
- Refresh any submission-named copy on every recompile; it is a copy, not a build target.
|
||
- Read `config.md` for email, provenance flags, and output preferences.
|
||
|
||
## Evidence-First Workflow
|
||
|
||
- `resume_builder/canonical/claims.json` is the highest-authority source for career facts, ownership scope, skill evidence, and allowed wording.
|
||
- Files under `output/` are generated artifacts, never evidence sources. Check `resume_builder/canonical/historical_outputs.json` before reusing any historical package.
|
||
- Verify the JD and assess hard gates before writing. Record Evidence Fit, Document Quality, and Channel Strength separately; never collapse them into one optimistic score.
|
||
- **No application quotas.** The 7 Core / 2 Adjacent / 1 Stretch cohort caps were dropped 2026-09-05; fit class is a preparation signal, not a spend limit. **Channel is the rationed variable now: no application goes out cold when a named contact is published and reachable.** Hard gates and NO-GO triggers are unchanged. See `application_strategy.md`.
|
||
- Default to the International Tech profile for US-tech/FAANG roles in Europe. Use the Swiss/DACH profile only when the audience calls for it.
|
||
- Natural bullet length and relevance govern selection. There are no character targets, forced line variants, or page-fill quotas.
|
||
- A cover letter is conditional. Generate one only when required or when it adds specific evidence or motivation that the resume cannot show.
|
||
- Run `resume_builder/helpers/validate_resume_system.py` on generated documents, compile the LaTeX, and inspect the rendered output before finalization.
|
||
|
||
---
|
||
|
||
## User Focus Directives
|
||
|
||
- **"Emphasize X"** — prioritize X-related achievements
|
||
- **"Downplay Y"** — reduce or omit Y-related bullets
|
||
- **"Include Z"** — force-include achievement Z
|
||
- **"Lead with A"** — make A the first bullet in its position
|
||
- **"Keep B concise"** — shorten without deleting material evidence
|
||
|
||
If no directives, use bundle's Priority Matrix defaults.
|
||
|
||
---
|
||
|
||
## Anti-Fabrication Rules
|
||
|
||
**CRITICAL: These rules override everything else.**
|
||
|
||
### Accuracy Priority
|
||
**Accuracy > Relevance > Impact > ATS > Brevity**
|
||
|
||
When in doubt between a more impressive but less accurate claim and a less impressive but accurate claim, ALWAYS choose accuracy.
|
||
|
||
### Provenance Discipline
|
||
- Read `config.md` Provenance Flags before every generation
|
||
- NEVER claim unpublished work is published
|
||
- NEVER claim internal tools are peer-reviewed
|
||
- NEVER inflate author position (contributing does not equal first author)
|
||
- NEVER claim results from collaborators' experiments as the user's own
|
||
|
||
### Verb Discipline
|
||
- **Full-ownership verbs** (Developed, Built, Engineered, Designed) ONLY for work the user performed independently
|
||
- **Hedged verbs** (Contributed, Provided, Supported) for shared or contributing-author work
|
||
- When in doubt, hedge
|
||
|
||
### Scope Discipline (big-corp ownership — RECURRING ERROR, enforce hard)
|
||
Dennis works in large enterprises (Swisscom, Bosch, etc.). He does **not** solo-own company-wide platforms, migrations, or systems. Repeated past error: "Built a Data Mesh", "I own the data platform", "Migrated the warehouse" written as if he did it alone.
|
||
- **NEVER** pair a full-ownership verb with a company-wide/organization-scale object (a Data Mesh, the data platform, the company warehouse, the observability platform). That reads as a false solo claim.
|
||
- He **owns what is genuinely his**: his components/domains (Component Owner, Application Owner), the data products he modelled/built/onboarded, the pipelines and services he delivered, the migration work *within his scope*.
|
||
- **Fix pattern:** scope the object or hedge the verb.
|
||
- ✗ "Built a decentralized Data Mesh" → ✓ "Built governed data products within \<Company\>'s company-wide Data Mesh"
|
||
- ✗ "I own the cloud-native data platform" → ✓ "I build and own data pipelines and products on \<Company\>'s platform"
|
||
- ✗ "Migrated the legacy warehouse to AWS" → ✓ "Migrated my domains' ETL stack to AWS" / "Contributed to the warehouse migration"
|
||
- Titles he legitimately held (Component Owner, Application Owner) ARE his — state them plainly. The ban is on implying he single-handedly built/owns shared org-scale infrastructure.
|
||
- See `[[feedback_bigcorp_ownership_scope]]` in memory.
|
||
|
||
---
|
||
|
||
## Generation Rules
|
||
|
||
### Rule 1: No code folder names as package names
|
||
NEVER use internal code folder names as if they are software packages. Always describe the tool/method instead (e.g., "custom FEM solver" not "FEM_project/").
|
||
|
||
### Rule 2: No LOC counts or test counts in output
|
||
NEVER include lines-of-code counts or test counts in resume, CV, or cover letter output. Focus on what the tool does, its impact, and adoption.
|
||
|
||
### Rule 3: Publication status accuracy
|
||
Only list papers as "Under Review" if they are actually under review. Check `config.md` Provenance Flags.
|
||
|
||
### Rule 4: Publication format — use et al.
|
||
Use et al. format. Show authors up to and including the user's position, then "et al." When total authors <= 4, show all names.
|
||
|
||
### Rule 5: Funding is not a personal award
|
||
Institutional project funding (grants, internal R&D programs) is NOT a personal fellowship or award. Never list funding sources under Fellowships & Honors.
|
||
|
||
---
|
||
|
||
## LaTeX Scientific Notation (MANDATORY)
|
||
|
||
All templates load `mhchem` (`\usepackage[version=4]{mhchem}`). Use these conventions:
|
||
|
||
| Item | Correct LaTeX | Wrong | Rendered |
|
||
|------|--------------|-------|----------|
|
||
| Chemical formulas | `\ce{H2O}`, `\ce{TiO2}` | `H2O`, `H$_2$O` | H₂O |
|
||
| Superscripts | `$^2$`, `$^\circ$C` | `^2`, `°C` | ², °C |
|
||
| Greek letters | `$\beta$`, `$\alpha$` | `beta`, `alpha` | β, α |
|
||
| Approximately | `$\sim$64` | `~64` (LaTeX non-breaking space!) | ~64 |
|
||
|
||
**CRITICAL:** `~` in LaTeX is a non-breaking space, NOT a tilde. Use `$\sim$` for "approximately."
|
||
|
||
Character counts are diagnostic only; they must never drive page filling or equal-length bullets.
|
||
|
||
---
|
||
|
||
## Active Sessions
|
||
|
||
Read [current applications](resume_builder/reference/current_applications.md), generated from `job_scout/state/applications.json`. Update the registry through the tracker, then regenerate views. Do not maintain another status table here. Historical notes are preserved under `job_scout/state/history/`.
|
||
|
||
---
|
||
|
||
## KB Corrections Log
|
||
|
||
_See `config.md` for user-specific corrections. Add verified errors here as you find them._
|
||
|
||
## Maintenance resume point
|
||
|
||
For the authorized project-review fixes, read [FIX_PROGRESS.md](FIX_PROGRESS.md) before continuing. Both agent skill directories route to the shared workflows in `resume_builder/reference/workflows/`.
|