한국 취업 자기소개서(자소서) 작성 파이프라인 — 기업 조사부터 초안·글자 수 조정·전문가 리뷰·다듬기(비개발 독자 테스트)·최종 검증까지 8단계를 실행한다. "자소서 써줘", "자기소개서 작성", "이 회사 지원서 만들어줘", "자소서 다시 써줘", "이 문항만 다시" 같은 요청, 또는 새 회사 지원을 시작하거나 특정 단계부터 이어갈 때 사용. 인자로 회사명(필수)과 직무명(필수), 시작 단계(선택)를 받는다. 회사명·직무명 중 하나라도 없으면 진행 전에 반드시 물어본다.
Installs into .claude/skills of the current project.
Are you the author of Jasoseo?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/kangryun-jasoseo)
---
name: jasoseo
description: 한국 취업 자기소개서(자소서) 작성 파이프라인 — 기업 조사부터 초안·글자 수 조정·전문가 리뷰·다듬기(비개발 독자 테스트)·최종 검증까지 8단계를 실행한다. "자소서 써줘", "자기소개서 작성", "이 회사 지원서 만들어줘", "자소서 다시 써줘", "이 문항만 다시" 같은 요청, 또는 새 회사 지원을 시작하거나 특정 단계부터 이어갈 때 사용. 인자로 회사명(필수)과 직무명(필수), 시작 단계(선택)를 받는다. 회사명·직무명 중 하나라도 없으면 진행 전에 반드시 물어본다.
---
# 자소서 파이프라인 (jasoseo)
## 처음 쓰는 사용자를 위한 준비물
이 스킬은 "지원자 워크스페이스" 폴더(기본값: 현재 작업 디렉터리) 안에서 작동한다. 워크스페이스에는 다음 두 파일이 있어야 한다:
1. **이력서** — 기본 경로 `이력서.md`(마크다운 권장, 없으면 PDF도 Read 가능). 모든 자소서 소재의 유일한 사실 원천이다. 파일이 없으면 사용자에게 경로를 물어본다.
2. **프로필** — 기본 경로 `PROFILE.md`. 이력서에는 안 쓰지만 자소서에는 쓸 수 있는 개인적 사실(경험 귀속 주의사항, 삶의 경험(알바·동아리·여행·운동 등), 재사용 가능한 서사 자산, 회사별로 확립된 컨셉 계보 등)을 담는 곳. 파일이 없으면 이 스킬의 `references/profile-template.md`를 복사해 시작하라고 안내한다. 비어 있어도 진행은 가능하며, 진행 중 확인된 사실은 여기 계속 누적한다.
`<회사명>/` 폴더 하나가 지원 1건에 대응한다. **폴더는 처음 만들 때부터 마감일을 붙여서 만든다** — `<회사명>_마감MMDD`(마감일이 있을 때) 또는 `<회사명>_수시`(마감일이 없을 때, 즉 상시채용). 나중에 다시 이름을 바꾸는 수고와, 그 과정에서 기록해 둔 경로 참조가 깨지는 위험을 없앤다. 한 회사에 여러 직무를 동시에 지원한다면 폴더명에 직무를 함께 넣어 충돌을 피한다 — 예: `<회사명>_데이터엔지니어_마감0930`.
인자 해석: `/jasoseo 회사명 직무명` → 1단계부터. `/jasoseo 회사명 직무명 리뷰`처럼 마지막에 단계 이름(기업조사·초안·리뷰·다듬기 등)이 오면 그 단계부터 재개한다. 인자로 준 문자열 중 알려진 단계 키워드가 아니고 회사명도 아닌 나머지는 직무명으로 해석한다.
## 스킬 동봉 자료
- `scripts/verify.py` — 글자 수·필수 토큰·금지 토큰 검증(4·8단계 표준 계산식)
- `scripts/style_check.py` — 문체 검사: 금지 목록 0건 + 합격작 범위 경고(측정 수치, 영문 용어, 빽빽한 문장, 1인칭, 문장 길이, 말버릇, 같은 종결 3연속)(3·7·8단계)
- `references/문체_금지규칙.md` — 문체 규칙: 금지, 허용, 범위 기준, 쉬운 말, 마무리 문장(단일 출처, v0.3.0 개정)
- `references/소제목_문항패턴.md` — 소제목 기준, 문항 유형과 소재 배분, 본문 구성(공개 합격 자소서 분석 수치)
- `references/작성요령_반야칼럼.md` — 소재 다양화·스토리 구조 근거 문서
- `references/profile-template.md` — PROFILE.md 템플릿
## 시작 전 확인
**회사명과 직무명은 둘 다 필수 입력이다.** 같은 회사라도 직무(예: 데이터 엔지니어 vs 반도체 공정 vs 영업관리)에 따라 기업조사의 매핑 전략, 문항이 요구하는 직무 키워드, 리뷰의 직무 적합성 판정이 전부 달라진다. 인자나 대화에서 직무를 알 수 없으면 **1단계로 넘어가기 전에 반드시 사용자에게 직무를 물어보고**, 추측으로 진행하지 않는다.
1. 회사명·직무명이 확보됐는지 먼저 확인 — 없으면 물어본다
2. 이미 진행된 폴더/기록이 있는지 확인 — 있으면 끝난 단계는 건너뛴다
3. 이력서·PROFILE.md를 읽는다
4. 사용자에게 추가로 받을 것: 채용 공고(URL 또는 이미지), 문항과 글자 수(공백 포함/제외 기준 포함), 마감일
## 8단계
### 1. 기업 조사
`jasoseo-researcher` 역할로 조사를 수행한다. 이 역할의 원칙·입출력은 저장소 `agents/jasoseo-researcher.md`에 정의돼 있다 — 서브에이전트를 등록해 쓸 수 있는 환경(예: Claude Code 플러그인)에서는 그 서브에이전트를 호출하고, 그렇지 않은 환경(예: Codex 스킬)에서는 그 정의를 따라 직접 수행한다. 입력: 회사명·직무명·이력서 경로·공고 정보·저장 폴더 경로. 산출물: `기업조사_<회사명>.md`.
- **접점 사실표(반드시 수행)**: 인재상 키워드 매핑과 별도로, 자소서 본문에 그대로 넣을 수 있는 **회사 쪽 구체 사실**을 캔다. `기업조사_<회사명>.md` 마지막 절 `## 접점 사실표`로 저장한다.
| 문항 유형 | 회사 사실(시스템·정책·발표·수치·날짜) | 출처 URL | 내 행위(이력서 근거, 수치 포함) | 본문 삽입 문장 초안 |
- "회사 사실"은 고유명사·날짜·수치가 있는 것만 인정(예: "2026.07 AI 개발센터 개소, 자체 에이전트 플랫폼 구축" ○ / "디지털 혁신을 선도" ✗). 비전·핵심가치 문구는 접점이 아니라 배경이다.
- "내 행위"는 이력서의 실제 행위 1건(무엇을 했나)이어야 하며, 역량 명사("운영 경험", "책임감")로 쓰지 않는다.
- 문항 유형별 최소 개수: 지원동기·포부 2건 이상. 다른 문항은 본문에 접점 문장을 넣지 않으므로(3단계 삼요소 표) 공고 수행업무 원문만 적어 두면 된다(마지막 계획 문장용).
- 지원동기·포부 칸이 비어 있으면 조사를 더 한다. 빈 결의 문장으로 때우지 않는다(`references/문체_금지규칙.md` 2-4).
이 시점에 폴더를 새로 만든다면 마감일 접미사를 붙여서 만든다(위 "준비물" 참조).
### 2. 채용 공고 분석 + 문항 분석
- 공고 이미지나 텍스트에서 주요업무·우대사항·근무형태·마감을 확인한다
- 문항은 `자기소개.md`에 원문 그대로 정리한다. **문항이 아예 없는 공고(대개 상시채용)라면 여기서 멈추고 1단계 산출물만 남긴 채 사용자에게 "문항 없음, 기업조사만 완료"로 보고한다** — 없는 문항에 맞춰 초안을 지어내지 않는다
- **문항별 분석(반드시 수행)**: 각 문항마다 다음을 함께 기록한다
- 실제로 묻는 것이 무엇인지 문장 단위로 분해 — 복합 질문이면 하위 질문을 모두 명시 (예: "지원동기 및 다른 지원자보다 더 잘 수행할 수 있는 이유"는 하위 질문 2개: ①지원동기 ②차별화 근거)
- 문항 유형 분류: 지원동기 / 회사·직무 선택기준 / 성장과정·인물 / 강점·약점 / 직무적합성 / 문제해결·극복경험 / 기타
- 이 분류·분해표는 초안 작성 후 "질문에 실제로 답했는가"를 검증하는 **문항 요구 체크리스트**로 재사용한다(5단계 리뷰, 8단계 검증)
- 요구 요소 가운데 배운 점·느낀 점·어려움·이유·포부는 초안에서 각각 명시 문장으로 답한다(`references/문체_금지규칙.md` 3-3). 금지 규칙만 쌓은 글은 배운 점을 묻는 문항에 배움을 쓴 비율이 22%(합격작 62%)였다
- 문항 수와 글자 수는 실제 지원 폼 기준으로 확정해 `자기소개.md` 첫 줄에 "확인 일시 · 문항 N개"를 적고, 8단계에서 최종본 문항 수가 같은지 다시 센다. 여러 회사를 동시에 쓸 때 가장 흔한 사고가 문항 누락이다
### 3. 초안 작성 → `자기소개서_초안.md`
- 전체 컨셉을 한 줄로 정의한다. PROFILE.md에 재사용 가능한 컨셉 계보가 있으면 회사 가치에 맞게 변주하고, 없으면 이번 지원에서 새로 세운다
- 문항별 `**[제목: ...]**` 소제목 + 본문. 상단에 제약 요약(`>` 블록), 하단에 `## 참고`(소재 배분·미사용 소재(면접 대비)·인재상 매핑·접점 사용 내역·문항 요구 체크리스트)
- **소제목(`references/소제목_문항패턴.md` 1절)**: 바꿔 끼우기 검사(다른 회사 자소서에 넣어도 말이 되면 탈락), 명사구 11~23자, 고유명사나 수치 1개 이상. "A에서 B로" 꼴과 "~했습니다" 문장형은 피한다(합격작 0%, 3~8%). 후보 3~4개를 제시해 지원자가 고르게 한다. 상한 700자 이하 문항은 소제목 없이 본문만 쓰는 것을 기본으로 권한다
- **문항당 경험 수**: 상한 1,000자 이하 문항은 경험 1개, 1,200자 이상은 2개(1,001~1,199자는 1개). 경험은 발단부터 결말까지 서사를 갖는 소재 1건이다. 1,000자 이하에서는 두 번째 경험을 한 문장 보조 언급으로도 넣지 않는다 — 판단과 결과의 밀도가 떨어지고 이력서를 문장으로 옮긴 글이 된다
- **본문 구성(`references/소제목_문항패턴.md` 3·4절)**: 문단 수 = 목표 글자 수 ÷ 200(±1), 본문 문단 150~250자, 첫 문장 50자 내외 두괄식, 회사·산업 일반론으로 시작하지 않기, 본인과 팀원 담당 경계를 문장 단위로 나누기
- 소재는 이력서의 실제 경험만 사용한다. PROFILE.md에 경험 귀속 주의사항(팀 프로젝트에서 본인 담당이 아닌 부분 등)이 있으면 반드시 확인하고 지킨다
- **삼요소 배합(반드시 적용)**: 모든 문항은 회사 접점(1단계 접점 사실표) · 지원자 프로젝트 · 삶의 경험·역량 세 요소를 섞되, 문항 유형이 주 요소를 정한다.
| 문항 유형 | 주 요소 | 보조 요소 | 회사 접점의 위치 |
|---|---|---|---|
| 지원동기·포부 | 회사 접점 사실 2건 이상 | 프로젝트는 접점의 근거로만(행위 1건) | 본문 첫·둘째 문단, 접점 사실 → 내 행위 순으로 맞댐 |
| 직무·기술·문제해결 | 프로젝트(판단·행위·수치) | 없음 | **본문에 넣지 않는다.** 마지막 계획 문장에서 공고 수행업무 원문으로만 잇는다 |
| 인성·가치관·소통 | 삶의 경험(PROFILE.md) | 1,000자 이하: 없음 / 1,200자 이상: 프로젝트 1개를 두 번째 경험으로 | 본문에 넣지 않는다. 마지막 계획 문장에서 공고 수행업무로 잇는다 |
- 회사 접점은 **접점 사실표에 있는 것만** 쓰고, 표에 없는 회사 언급은 초안에 넣지 않는다.
- 접점 문장 형식: "회사 사실(고유명사·날짜·수치) + 내 행위(이력서 행위 1건)"를 한 문장 또는 인접 두 문장으로. 예) "○○사가 7월 AI 개발센터에서 자체 플랫폼 위에 코드 에이전트를 연계한다는 소식을 봤습니다. 두 팀 프로젝트에서 같은 구조의 파이프라인을 단독 설계해 적용했습니다."
- 빈 격상 문장으로 닫지 않는다("귀사의 시스템 역시 ~라고 믿습니다"). 경험 문항의 마지막 문장은 공고 수행업무 원문 + 경험 속 방법을 잇는 계획 1문장이고, 문항마다 앞머리와 종결을 섞는다(`references/문체_금지규칙.md` 6절).
- "~를 읽었습니다. 마찬가지로 ~"처럼 회사 사실을 끌어와 곧바로 경험에 맞대는 장치를 경험 문항에 쓰지 않는다(블라인드 비교에서 이음새가 드러나는 반복 패턴으로 지목됐다).
- `## 참고`에 "접점 사용 내역: 문항N ← 접점 사실표 #k" 줄을 추가해 리뷰가 대조할 수 있게 한다.
- **작성 요령(반드시 적용, 근거는 `references/작성요령_반야칼럼.md`)**:
- **소재 다양화**: 모든 문항을 직무 경험으로만 채우지 않는다. 자소서가 평가하는 것은 기술 목록이 아니라 "어떻게 일하는 사람인지"(동기·목표·관계 방식·가치관)다. 성장과정·인물·소통·가치관 유형 문항에는 삶의 경험(PROFILE.md)을 먼저 검토하고, 쥐어짠 직무 소재보다 진짜 인상적인 경험을 인재상에 연결한다. 직무 문항이라도 "실력"만큼 "좋은 사람"이 드러나게 쓴다.
- **스토리 구조**: 경험 서술 문항의 본문은 발단(배경+가벼운 스포일러) → 전개·위기(위기로 느껴지게 하는 제약을 구체적으로) → 절정(판단·전략·행동) → 결말(정량 성과) → 에필로그(배운 점이나 바뀐 행동 — 문항이 배운 점을 물으면 명시) 구조를 갖춘다. 에필로그만 문항 의도에 맞게 변주하면 같은 소재를 다른 유형에 재사용할 수 있다. 이 구성이 만들어지지 않는 소재는 보강하거나 버린다.
- **문체 규칙(v0.3.0 개정 — 정의와 수치 근거는 `references/문체_금지규칙.md`)**: ① 금지(0건): 번역투, 상투어, 근거 없는 일반 명제, 빈 결의와 신념 선언, 중간점, '세우다'와 '단독으로', 추상명사 정의문 종결, 구어 종결, 약점 자진 고백 ② 허용: "저는, 제가" 답변당 1~4회, 연결어와 지시어(그래서, 그 결과, 이를, 수단의 "~를 통해"), 문항이 물으면 배운 점과 느낀 점 명시(이력서나 PROFILE.md에 근거 있는 것만), 공고 업무를 지목한 포부와 결의 ③ 범위: 측정 수치 1,000자당 4.5개 이하(전후 쌍은 1개), 영문 용어 14개 이하와 서로 다른 용어 7개 이하, 빽빽한 문장 25% 이하, 문장 길이 중앙값 50~75자, 말버릇 표현당 1회 이하, 같은 종결 3연속 금지 ④ 쉬운 말: 처음 나오는 기술 용어는 하는 일을 한국어로 풀어 쓴다 ⑤ 금지어는 늘리지 않는다 — 표현을 금지하면 다른 말버릇이 생긴다. 새 문제는 범위 검사와 독자 테스트로 잡는다. 판정 질문 "이 문장을 지우면 정보가 사라지는가, 톤만 사라지는가"는 유지한다.
- **미래 약속 문장 금지**: "입사 전까지 ○○ 학습·자격증 준비를 시작하겠습니다"류 문장은 면접에서 "지금 뭘 하셨죠?"로 반드시 돌아오는 지뢰다. 사용자가 실행을 확정한 것만 쓰고, 갭 고백 뒤 마무리는 원리 전이("도구는 달라도 반복 업무를 찾아 자동화하고 효과를 재는 일의 구조는 같습니다")나 이미 있는 경험으로 닫는다.
- **지원동기 유형 문항(반드시 수행)**: 2단계에서 "지원동기"로 분류된 문항에는 장기 근속·함께 성장하려는 의지를 담은 문장을 1개 포함하되, **접점 사실표의 구체 업무를 지목한 계획형**으로만 쓴다(예: "입사 3년 안에 ○○ 시스템의 회귀 평가 체계를 맡고 싶습니다"). "평생 헌신하겠습니다", 업무 없는 "함께 성장하겠습니다" 같은 빈 결의로 닫지 않는다(`references/문체_금지규칙.md` 2-4).
### 4. 글자 수 95% 조정 + 소재 중복 자가진단
- **표준 계산식**: `python3 <스킬경로>/scripts/verify.py <초안.md> [필수토큰…] [--forbid 금지토큰…]` — 문항별 `## 문항 N` 섹션을 소제목 라인 포함·공백 포함·**개행 제외**·마크다운 `**` 제외로 실측한 값이 폼 기준값(공백 제외 병기). 임시 스크립트를 새로 쓰지 않는다 — 개행 포함/제외가 섞이면 실측치가 문항마다 어긋난다. 목표 = 제한 × 95% ± 10자
- **글자 수 기준(공백 포함/제외)이 공고에 없으면, 실제 지원 폼(레퍼런스 URL)을 한 번 열어보고 글자 수 카운터 표기를 확인한다.** 그래도 확인이 안 되면 공백 포함으로 가정하고 초안 상단과 참고에 "제출 전 폼에서 재확인 필요"라고 명시한다
- 빈 글자 수는 판단·과정·결과·배운 점의 사실로 채운다. 수치나 기술 용어로 채우지 않는다(범위 기준을 넘기는 주원인이다)
- **소재 중복 자가진단**: 5단계(전문가 리뷰)로 넘기기 전에, 문항별로 사용한 고유 수치·프로젝트명을 목록화해 grep으로 직접 중복 여부를 확인한다. 리뷰 에이전트를 부르지 않고도 값싸게 잡을 수 있는 문제를 굳이 리뷰 단계까지 끌고 가지 않는다
### 5. 전문가 리뷰
`jasoseo-reviewer` 역할로 리뷰를 수행한다(지원 업계에 맞춘 "인사담당자 관점"). 이 역할의 5축 평가 기준은 저장소 `agents/jasoseo-reviewer.md`에 정의돼 있다 — 서브에이전트를 쓸 수 있는 환경에서는 그 서브에이전트를 호출하고, 그렇지 않으면 그 정의를 따라 직접 수행한다. 입력: 초안·공고·기업조사(접점 사실표 포함)·이력서(사실 대조용)·2단계 문항 분석·`references/문체_금지규칙.md` 경로. 산출물: `리뷰_리포트.md`.
리뷰어에게 명시할 [치명] 기준: 이력서에 없는 사실(배운 점과 감정 문장의 근거 포함), 접점 사실표에 없는 회사 주장, 문항 요구 체크리스트에서 답하는 문장이 없는 요소, 문체 금지 목록(`references/문체_금지규칙.md` 2절) 위반. [권장] 기준: 범위 기준(4절) 이탈, 풀어 쓰지 않은 기술 용어(5절), 경험 문항 본문 중간의 회사 접점 문장, 마무리 공식 반복(6절).
**비개발 독자 테스트(v0.3.0 신설)**: 리뷰와 별도로, 기술 배경이 없는 해당 회사 인사 담당자 역할로 답변만 읽고 문항마다 ① 무엇을 했고 무엇이 달라졌는지 두 문장 요약 ② 이해가 막힌 단어와 문장 ③ 기계적으로 읽히는 문장 ④ 문항 요구 요소별 O/△/X를 적는다(서브에이전트를 쓸 수 있으면 새 서브에이전트로 실행한다 — 초안을 쓴 맥락이 없는 쪽이 정확하다). 이전 버전이 있으면 문항마다 A/B 순서를 섞어 어느 쪽이 새 버전인지 가리고 비교한다. 결과는 `비교평가_*.md`나 리뷰 리포트에 남긴다.
**리뷰 등급(A, B+ 등)은 매기지 않는다.** 블라인드 비교에서 LLM 심사자는 근거가 빽빽한 글을 높게 쳤지만 그 순위는 실제 서류 결과와 맞지 않았다. 리뷰는 사실 오류, 문항 누락, 가독성 결함을 찾는 데만 쓰고, 통과 가능성 판단에 쓰지 않는다.
### 6. 리뷰 반영
- [치명] 전부, [권장] 대부분, [선택] 취사 반영. 리뷰어 제안문이 이력서에 없는 새 주장을 만들면 완화해서 반영한다
- 반영 후 4단계 글자 수 재조정, 리포트와 초안 `## 참고`에 반영 내역을 기록한다
### 7. 다듬기 → `자기소개서_윤문.md` (제출용 최종본 — 파일명은 v0.2.0과 맞추려고 유지)
**외부 윤문 스킬(예: humanize 계열)은 쓰지 않는다(v0.3.0).** 윤문 규칙이 "~를 통해", "또한", 문두 접속사를 AI 티로 보고 걷어내는데, 이 표현들은 합격작 답변의 절반 안팎에 나온다(각각 58%, 43% 등). 윤문을 거친 글은 합격작 관행과 반대로 갔고, 윤문 등급은 서류 결과와 관계가 없었다. 지원자가 따로 요청할 때만 탐지 결과를 참고하고, 연결어, 1인칭, 수단의 "~를 통해" 제거 제안은 반영하지 않는다.
다듬기 순서:
1. 5단계 비개발 독자 테스트에서 막힌 용어는 풀어 쓰고(`references/문체_금지규칙.md` 5절), 기계적이라고 지목된 문장은 다시 쓴다
2. `python3 <스킬경로>/scripts/style_check.py <파일.md>` — 금지 0건, 범위 ⚠는 고치거나 `## 참고`에 사유를 적는다
3. 마무리 문장의 앞머리와 종결을 문항끼리 섞는다(6절)
4. `scripts/verify.py`로 글자 수를 다시 잰다(95% ± 10자)
5. 폼에 붙일 plain text(`자기소개서_제출용.txt`, 마크다운 기호 없음)를 만든다
- **소제목(`**[...]**`) 라인은 지원자가 고른다.** 소제목을 손봐야 하면 본문 수정과 분리해 3~4안(글자 수 검산 완료)을 제시하고 고르게 한다 — 에이전트가 임의로 바꾼 소제목은 지원자가 거부하는 경우가 많다
- 상단 안내는 확정 사실로 갱신한다(`## 참고`는 초안에 보존되므로 제출용에선 제외 가능)
**최종본 수정 규칙**: 최종본에 지원자 요청 수정을 넣기 전에 현재 파일을 `자기소개서_윤문_v1.md`(이후 `_v2`…)로 복사해 보존하고, 최종본 파일명은 `자기소개서_윤문.md`로 고정한다. 최종본 헤더에 `> **버전**: vN — vN-1→vN 변경 n건: …` 한 줄을 기록한다. 제자리 덮어쓰기는 하지 않는다.
### 8. 최종 검증 + 기록
- **문항 수 대조**: 최종본의 `## 문항 N` 개수가 지원 폼 문항 수와 같은지 센다. 다르면 제출 불가 — 누락 문항부터 쓴다
- 문체 검사: `python3 <스킬경로>/scripts/style_check.py <최종본.md>` — **금지 0건**(종료 코드 0), 범위 ⚠는 고쳤거나 `## 참고`에 사유가 있어야 한다. 정규식은 1차 필터이므로 0건이어도 `references/문체_금지규칙.md` 정의로 마지막 문장과 배운 점 문장을 다시 읽는다. 금지 히트가 남으면 8단계 완료로 보고하지 않는다
- **문항 요구 체크리스트**를 최종본 `## 참고`에 표로 남긴다(문항, 요구 요소, 답하는 문장)
- 에이전트 보고를 그대로 믿지 말고 직접 재검증한다: `scripts/verify.py <윤문.md> <핵심 수치·확정 표현…> --forbid <금지 표현…>`으로 글자 수와 핵심 토큰 보존을 확인한다
- 사용자의 기록 시스템(메모리·노트 등)에 최종본 경로·마감·면접 대비 사항·미결 확인 사항을 남긴다
- **결과 추적(권장)**: 서류 결과가 나오면 회사별 기록에 적어 둔다. 문체 규칙의 효과는 LLM 리뷰가 아니라 실제 결과로만 판단할 수 있다
- 사용자에게 보고: 글자 수, 반영 요약, **제출 전 남은 일**(사용자 확인이 필요한 사실, 면접 대비 목록), 마감일 리마인드
## 여러 회사를 동시에 진행할 때
지원 후보가 여러 곳이고 병렬로 진행하고 싶다면, 회사별로 이 스킬 전체를 서브에이전트에 위임해 동시에 실행할 수 있다. 이때:
- 각 서브에이전트에게 이 SKILL.md와 두 에이전트 정의(`jasoseo-researcher`, `jasoseo-reviewer`) 경로, 이력서·PROFILE.md 경로, 회사별 폴더 경로를 명시적으로 전달한다
- 인덱스 파일처럼 여러 서브에이전트가 동시에 쓸 수 있는 공유 파일은 각 서브에이전트가 직접 쓰지 않게 한다. 각자 자기 회사의 개별 기록 파일만 쓰고, 인덱스에 추가할 한 줄만 반환받아 호출자가 마지막에 한 번에 정리한다
- 회사 폴더가 아직 존재하지 않는 상태에서 병렬로 시작해야 이름 충돌이 없다. 다른 프로세스가 아직 쓰고 있는 폴더는 그 작업이 끝난 뒤에 이름을 바꾼다(마감일 접미사 등)
## 테스트 시나리오
**정상 흐름**: 문항과 글자 수 제한이 명확한 공고 → 8단계 전부 실행 → 글자 수가 목표 범위 안에 들어오고 [치명] 리뷰 이슈 0건, `style_check.py` 금지 0건과 범위 경고 처리 완료, 비개발 독자 요약 성공으로 수렴
**에러 흐름**: 문항이 공고에 등록되어 있지 않은 경우(대개 상시채용 공고) → 1단계(기업조사)만 수행하고 3단계 이후는 건너뛴다. 사용자에게 "문항 없음, 기업조사만 완료"로 명확히 보고한다