job-searcher · diff

git:20260807.89f8040 to git:20260822.0d43a39

21 added, 16 removed. Audit A to A.

---
name: job-searcher
- description: '한국 채용 공고 자동 검색 기능(job-source 연동)은 현재 준비 중(TODO)입니다. 사용자가 채용, 취업, 공채, 이직, 구직, 인턴, 공고, 직무 찾기, 기업 정보 조회, 대기업/공기업/공공기관 지원 등 채용 공고 검색을 요청하면 이 스킬로 안내하되, 자동 검색 대신 사용자가 직접 확보한 공고(JD)나 채용 URL을 받아 다음 단계로 연결합니다. 어디 지원하면 좋을까, 취준 중인데, 삼성 들어가고 싶어 같은 간접 표현도 포함합니다.'
+ description: '한국 채용 공고 검색 의도를 안내하고, 사용자가 제공한 잡코리아·링커리어·SK Careers·LG Careers 공개 공고 URL을 자격증명 없이 수집·정규화합니다. 채용, 취업, 공채, 이직, 구직, 인턴, 공고, 직무 찾기, 기업 정보 조회, 공고 URL 분석, 링크 보고 자소서 작성 같은 한국어 요청을 포함하며 자동 검색은 아직 TODO임을 구분합니다.'
---
- # Job Searcher (준비 중 · TODO)
+ # Job Searcher
- 한국 채용 공고를 자동으로 검색하는 job-source 연동은 아직 구현되어 있지 않습니다. 단일 정규화 어댑터로 다시 도입할 예정입니다.
+ 한국 채용 공고를 자동으로 검색하는 job-source 연동은 아직 구현되어 있지 않습니다. 다만 사용자가 직접 제공한 공개 공고 URL은 정규화할 수 있습니다.
이 프로젝트는 API 키나 액세스 토큰 등 별도로 발급받아야 하는 인증 정보를 사용하지 않습니다. 사용자에게 인증키 발급이나 API 신청을 요구하지 않습니다.
- 이 스킬은 자동 검색을 대신하지 않으며, 채용 공고 검색 의도를 받았을 때 사용자를 다음 단계로 연결하는 안내 역할만 합니다. 직접 명령어나 스크립트를 실행하지 않습니다.
+ 지원 URL은 잡코리아, 링커리어, SK Careers, LG Careers 상세 페이지를 지원합니다. 검색·로그인·지원 제출은 하지 않습니다.
---
## 절대 금지
- 자동 지원, 사이트 로그인, CAPTCHA 우회
- 이메일 발송 또는 개인정보 전송
- 검색 결과를 임의로 생성하거나, 실제로 조회하지 않은 공고를 사실처럼 제시
- 구현되지 않은 기능을 "검색했다"라고 표현
- API 키·액세스 토큰·인증키 발급이나 API 사용 신청을 사용자에게 요구
---
## Inputs (입력)
사용자의 자연어에서 아래를 파악합니다.
- **채용 공고 검색 의도** — 예: `백엔드 공고 찾아줘`, `삼성 채용 알려줘`, `취준 중인데 어디 지원할까`
- **이미 확보한 자료** — 사용자가 직접 가진 채용 공고(JD) 본문 또는 채용 URL
---
## Workflow (절차)
- ### Step 1: 현재 상태 안내
+ ### Step 1: 의도 구분
- 채용 공고 자동 검색(job-source 연동)이 아직 준비 중(TODO)임을 사용자에게 명확히 알립니다. 없는 결과를 만들어 내지 않습니다.
+ - 사용자가 공고를 찾아달라고 하면 자동 검색이 아직 TODO임을 안내합니다.
+ - 사용자가 지원할 공개 공고 URL을 제공하면 URL 수집 단계로 진행합니다.
- ### Step 2: 대안 경로 제안
+ ### Step 2: 공개 URL 정규화
- 자동 검색 대신 아래 중 하나로 진행할 수 있음을 안내합니다.
+ 설치된 `fetch-jobs` workflow tool을 우선 사용합니다. 저장소에서 직접 작업하는 환경에서는 다음 명령을 사용합니다.
- - 지원하려는 공고의 JD 본문 또는 채용 URL을 직접 제공하면, `jd-analyzer` 스킬로 분석을 시작합니다.
- - 이미 저장된 정규화 공고(`data/jobs/`)가 있다면 `rank-jobs` / `schedule-jobs` 지원 도구로 우선순위와 마감일을 정리할 수 있습니다.
+ ```bash
+ node tools/fetch-jobs.mjs --source url --url "<posting-url>"
+ ```
+ 실제 stdout/stderr를 그대로 확인합니다. 성공하면 생성된 `data/jobs/` JSON의 `raw.postingText`, `raw.positions`, `raw.questions`, `raw.attachments`, `raw.applyUrl`, `raw.extractionWarnings`를 읽습니다.
+
### Step 3: 다음 단계 연결
- 사용자가 공고나 URL을 제공하면 채용 준비 워크플로(JD 분석 → 자소서 작성 등)로 자연스럽게 이어 갑니다.
+ 회사와 직무가 하나로 확인되면 `jd-analyzer`로 연결합니다. 여러 직무가 있거나 문항이 누락되면 그 정보만 질문하고, 다른 직무의 내용을 추정하지 않습니다.
---
## Output (출력)
- - 자동 검색 미지원(TODO) 사실을 먼저 한 문장으로 명확히 전달합니다.
- - 이어서 사용자가 취할 수 있는 구체적 대안 한두 가지를 제안합니다.
- - 공고 목록을 표로 제시하지 않습니다(조회 기능이 없으므로 빈 표나 임의 데이터를 만들지 않습니다).
+ - 검색 요청에는 자동 검색 미지원(TODO) 사실을 명확히 전달합니다.
+ - URL 요청에는 저장된 정규화 파일과 추출 경고를 전달합니다.
+ - 없는 공고나 문항을 임의로 만들지 않습니다.
---
## Fallback (대안)
- - **job-source 연동이 구현되면**: `tools/fetch-jobs.mjs`에 어댑터를 등록하고, 이 스킬을 검색 워크플로로 되돌립니다.
- - **사용자가 지금 당장 진행을 원할 때**: 공고 URL 또는 JD 본문을 요청하여 분석·작성 단계로 넘어갑니다.
+ - **지원하지 않는 사이트**: JD 본문을 붙여 달라고 요청합니다.
+ - **첨부 PDF·이미지에만 상세 JD가 있는 경우**: 읽을 수 있는 파일이나 해당 직무 본문을 요청합니다.
+ - **페이지 접근 실패**: 실제 오류를 안내하고 내용을 추정하지 않습니다.
- **의도가 모호할 때**: 질문 하나만 합니다 (예: "지원하려는 공고 링크나 내용을 알려주실 수 있을까요?").