# Shared Operations — All Skills > Referenced by `/make-resume`, `/make-cl`, `/critique`, and `/edit-resume`. > Read this file at skill startup. Skills reference specific sections by name. --- ## Three-Session Workflow Standard JD pipeline uses 3 sessions for token efficiency + quality: Session 1: `/make-resume JDs/JD_xyz.txt` → Phase 0 (research) → STOP → Phase 1 (bullets) → STOP → Phase 2 (resume) → STOP → "Resume done. Copy after /clear: /make-cl output//session_.md" Session 2: `/make-cl output//session_.md` → Load context → generate CL → compile → STOP → "CL done. Copy after /clear: /critique output//session_.md" Session 3: `/critique output//session_.md` → Full package critique → STOP → If approved: finalization check → "Package complete in output//" If edits needed after critique: /clear → /edit-resume output//e2e__cv.tex output//critique_.md /clear → /critique output//session_.md (re-critique) --- ## Fresh Session Startup CLAUDE.md is auto-loaded. These files are NOT — read them at skill start: 1. `CLAUDE.md` — check Active Sessions and KB Corrections Log 2. If resuming work on an existing JD: read its session file and pick up at Status → Next 3. If starting a new JD: proceed to Phase 0 --- ## Session File System Every JD gets a persistent session file: `output//session_.md` — the single source of truth for all context. **Naming:** Derive `` from company/role — lowercase, underscores (e.g., `acme_engineer`, `natlab_postdoc`). **All output files use the same key:** - `output//session_.md` — context file - `output//e2e__resume.tex` or `_cv.tex` — generated document - `output//e2e__cover_letter.tex` — cover letter - `output//critique_.md` — critique **Re-read the session file at the start of EVERY phase** to restore context after compaction. --- ## Session File Derivation (for /make-cl, /critique, and /edit-resume) From .tex path: strip `e2e_` prefix (if present) + `_resume.tex`/`_cv.tex`/`_cover_letter.tex` suffix → ``. Example: `output/Acme/e2e_acme_engineer_resume.tex` → `acme_engineer` → look for `session_acme_engineer.md` **Search order:** 1. Direct path from $ARGUMENTS 2. Folder path: `output//session_.md` (derive FolderName from JD filename or session name) 3. Flat `output/` (legacy): `output/session_.md` 4. `CLAUDE.md` Active Sessions pointer 5. Glob: `output/**/session_**.md` **If still not found:** - `/edit-resume`: Tell user — "No session file exists. Run `/make-resume` first, or I can create a minimal one (JD Info + Framing Strategy inferred from .tex content)." - `/critique`: Do 1-2 web searches to build minimal context. Note in critique: "No session file — framing context is approximate." - `/make-cl`: Tell user — "No session file exists. Run `/make-resume` first." --- ## Progress Commentary Provide brief status updates at each major step. Minimum: what you're doing + what you found. If a step takes more than ~30 seconds of silent processing, output a progress line. The user should never wonder if things are stuck. Per-phase examples are in each SKILL.md. --- ## Char Count Enforcement Run `python3 resume_builder/helpers/char_count.py` after each section or position you write/edit. The tool is authoritative — never trust mental math for char counts. If the tool fails, fall back to manual count and flag: "char_count.py unavailable — manual count, verify after compile." --- ## Folder Creation (Phase 0 of /make-resume) **Trigger:** Start of Phase 0 in `/make-resume`. **Steps:** 1. Derive folder name from JD filename: `JDs/JD_Acme.txt` → `output/Acme/` 2. `mkdir -p output//` 3. Write session file to `output//session_.md` 4. All subsequent output files (from ALL skills) go in this folder ## Finalization (after /critique approval) **Trigger:** User approves final output at `/critique` STOP. **Steps:** 1. Verify all expected files exist in `output//`: - `session_.md` - `e2e__[resume|cv].tex` + `.pdf` + compile artifacts - `e2e__cover_letter.tex` + `.pdf` + compile artifacts - `critique_.md` 2. Confirm to user: "Package complete in output// — [N] files" --- ## Session End Protocol Before the session ends or user does `/clear`: 1. **Update session file Status** — reflects actual state (which phase completed, what's next) 2. **Update memory pointer** in `CLAUDE.md` Active Sessions 3. **If mid-phase:** Write a `## Resume Point` section to the session file noting exactly where you stopped and what remains