diff --git a/Step-00.md b/Step-00.md new file mode 100644 index 0000000..499752c --- /dev/null +++ b/Step-00.md @@ -0,0 +1,52 @@ +# Step 00. 초기화 (Total Reset) + +## 목적 +이전 실행에서 잘못 생성된 파일들을 완전히 제거하고 백지 상태를 만든다. +Step-12 통과 실패 후 재실행할 때도 이 단계부터 시작한다. + +## 실행 +1. `D:\prompts` 하위 모든 디렉토리·파일 완전 삭제 (숨김 파일·빈 폴더 포함) +2. 삭제 완료 후 경로 재확인 + +## 통과 기준 +- D:\prompts 내 파일·폴더 100% Clean + +## 다음 단계 +- 통과 → Step-01로 이동 +- 실패 → 재실행 + +## Loop 규칙 +Step-12 실패로 인한 재실행일 경우: +- 실패 원인이 된 Step 번호를 이슈에 기록한다 +- 해당 Step 위키를 수정한 후 Step-00부터 재실행한다 + +--- + +## 진행현황 이슈 코멘트 템플릿 +``` +### [Step-00] 초기화 - YYYY-MM-DD + +[완료] 삭제된 폴더 수: +[완료] 삭제된 파일 수: +[오류] 삭제 실패 항목: +[확인] D:\prompts 현재 상태: +[확인] Loop 회차: 1회차 / N회차 (Step-XX 실패로 인한 재실행) + +→ 결과: 통과 / 재실행 +``` + +--- + +## Gitea 등록 (MCP 호출) +1. "진행현황" 이슈 번호 확인 (없으면 먼저 생성) +2. 코멘트 템플릿을 채운다 +3. create_issue_comment 호출 + - issue_number: 진행현황 이슈 번호 + - body: 채운 코멘트 내용 + +문제 발생 시: +1. create_issue 호출 → 제목: [Step-00] 문제 요약 +2. 해당 이슈에 create_issue_comment 3회 호출 + - 코멘트 1: 원인 분석 (Step이 적용되지 않은 이유, 위키의 어느 부분이 부족했는가) + - 코멘트 2: 변경 대상 및 이유 (현재 내용, 변경 제안, 변경 이유, 다른 Step 영향 여부) + - 코멘트 3: 해결 방향 및 임시 조치 (Step 위키 반영 필요 여부, 재실행 필요 여부) diff --git a/Step-01.md b/Step-01.md new file mode 100644 index 0000000..11d6f84 --- /dev/null +++ b/Step-01.md @@ -0,0 +1,58 @@ +# Step 01. 파일 수집 (Discovery) + +## 목적 +스캔 대상 경로에서 라이브러리·시스템 폴더를 제외하고 실제 작업 파일만 수집한다. + +## 스캔 대상 경로 +- `D:\crawling` +- `D:\for python` +- `D:\MYCLAUDE_PROJECT` + +## 실행 +1. 아래 경로는 스캔에서 물리적으로 제외한다 + - node_modules + - site-packages + - venv + - .git + - __pycache__ +2. 위 3개 경로 전체를 재귀 탐색하여 파일 경로 목록을 수집한다 (확장자 무관) +3. 수집된 전체 파일 목록을 사용자에게 보고하고 승인을 받는다 + +## 통과 기준 +- 라이브러리·시스템 파일 0건 +- 3개 경로 모두 스캔 완료 + +## 다음 단계 +- 사용자 승인 후 → Step-02로 이동 +- 누락 경로 발견 시 → 재실행 + +--- + +## 진행현황 이슈 코멘트 템플릿 +``` +### [Step-01] 파일 수집 - YYYY-MM-DD + +[완료] D:\crawling 수집 파일 수: +[완료] D:\for python 수집 파일 수: +[완료] D:\MYCLAUDE_PROJECT 수집 파일 수: +[완료] 총 수집 파일 수: +[제외] 라이브러리 경로 제외 목록: +[오류] 접근 거부 항목: [SKIP: Access Denied] +[확인] 사용자 승인 여부: + +→ 결과: 통과 / 재실행 +``` + +--- + +## Gitea 등록 (MCP 호출) +1. "진행현황" 이슈 번호 확인 +2. 코멘트 템플릿을 채운다 +3. create_issue_comment 호출 + +문제 발생 시: +1. create_issue 호출 → 제목: [Step-01] 문제 요약 +2. 해당 이슈에 create_issue_comment 3회 호출 + - 코멘트 1: 원인 분석 + - 코멘트 2: 변경 대상 및 이유 + - 코멘트 3: 해결 방향 및 임시 조치 diff --git a/Step-02.md b/Step-02.md new file mode 100644 index 0000000..c379274 --- /dev/null +++ b/Step-02.md @@ -0,0 +1,57 @@ +# Step 02. 필터링 (Filtering) + +## 목적 +수집된 전체 파일을 확장자 기준으로 분류하여 판독 대상과 제외 대상을 확정한다. +확장자는 미리 고정하지 않는다. 실제 발견된 것을 전부 통계 내고 분류한다. + +## 검토 대상 경로 +- `D:\crawling` +- `D:\for python` +- `D:\MYCLAUDE_PROJECT` + +## 실행 +1. Step-01 수집 목록 기준으로 발견된 모든 확장자와 수량을 집계한다 +2. 발견된 확장자를 아래 기준으로 분류한다 + - 제외 대상: 텍스트·로직이 없는 순수 바이너리 + (.png .jpg .jpeg .gif .bmp .exe .zip .dll .bin .db .edb .wav .mp3 .mp4 등) + - 정밀 검토 대상: 텍스트·로직·프롬프트가 존재할 가능성이 있는 모든 파일 + (.pdf .hwp .hwpx .xlsx .docx .pptx .py .js .ts .html .css .md .txt .json .yaml .xml .ini .cfg 등) + - 판단 불가 확장자: [MANUAL: Review Required] 로 분류하여 사용자에게 보고 +3. 최종 판독 대상 목록을 사용자에게 보고하고 확정한다 + +## 통과 기준 +- 텍스트·로직이 포함될 수 있는 파일 누락 0건 +- 판단 불가 확장자 사용자 보고 완료 + +## 다음 단계 +- 통과 → Step-03으로 이동 +- 재실행 → 누락 확장자 추가 후 재실행 + +--- + +## 진행현황 이슈 코멘트 템플릿 +``` +### [Step-02] 필터링 - YYYY-MM-DD + +[완료] 제외된 파일 수 (바이너리): +[완료] 정밀 검토 대상 파일 수: +[확장자별 통계 - 발견된 전체 나열] + +[MANUAL: Review Required] 판단 불가 확장자: + +→ 결과: 통과 / 재실행 +``` + +--- + +## Gitea 등록 (MCP 호출) +1. "진행현황" 이슈 번호 확인 +2. 코멘트 템플릿을 채운다 +3. create_issue_comment 호출 + +문제 발생 시: +1. create_issue 호출 → 제목: [Step-02] 문제 요약 +2. 해당 이슈에 create_issue_comment 3회 호출 + - 코멘트 1: 원인 분석 + - 코멘트 2: 변경 대상 및 이유 + - 코멘트 3: 해결 방향 및 임시 조치 diff --git a/Step-03.md b/Step-03.md new file mode 100644 index 0000000..cad2141 --- /dev/null +++ b/Step-03.md @@ -0,0 +1,56 @@ +# Step 03. 텍스트 캡처 (Authentic Capture) + +## 목적 +Step-02에서 확정된 판독 대상 파일들의 텍스트를 인코딩 오류 없이 추출하여 scan_full.json에 저장한다. + +## 실행 +1. Step-02 확정 목록 기준으로만 진행한다 +2. 인코딩 자동 감지 및 교정 (CP949 / UTF-8) +3. 파일 유형별 처리 + - .hwp / .hwpx → pyhwpx 또는 hwp5txt로 텍스트 변환 + 실패 시 → [MANUAL: HWP Review Required] 로 기록하고 다음 파일로 넘어간다 + - .pdf → PyMuPDF 또는 pdfplumber로 텍스트 추출 + - .docx → python-docx로 텍스트 추출 + - .pptx → python-pptx로 텍스트 추출 + - .xlsx → openpyxl로 텍스트 추출 + - .py .js .ts .html .css .md .txt .json .yaml .xml .ini .cfg → 직접 읽기 (인코딩 교정) +4. 전체 캡처 결과를 scan_full.json으로 저장한다 +5. 캡처된 파일 목록을 사용자에게 보고하고 승인을 받는다 + +## 통과 기준 +- 한글 가독성 100% (깨진 문자 0) +- scan_full.json 정상 생성 + +## 다음 단계 +- 사용자 승인 후 → Step-04로 이동 +- 인코딩 오류 다수 → 해당 파일 수동 처리 후 재실행 + +--- + +## 진행현황 이슈 코멘트 템플릿 +``` +### [Step-03] 텍스트 캡처 - YYYY-MM-DD + +[완료] 캡처 성공 파일 수: +[SKIP: Encoding Error] 목록: +[MANUAL: HWP Review Required] 목록: +[ERROR: File Corrupted] 목록: +[확인] scan_full.json 생성 여부: +[확인] 사용자 승인 여부: + +→ 결과: 통과 / 재실행 +``` + +--- + +## Gitea 등록 (MCP 호출) +1. "진행현황" 이슈 번호 확인 +2. 코멘트 템플릿을 채운다 +3. create_issue_comment 호출 + +문제 발생 시: +1. create_issue 호출 → 제목: [Step-03] 문제 요약 +2. 해당 이슈에 create_issue_comment 3회 호출 + - 코멘트 1: 원인 분석 + - 코멘트 2: 변경 대상 및 이유 + - 코멘트 3: 해결 방향 및 임시 조치 diff --git a/Step-04.md b/Step-04.md new file mode 100644 index 0000000..fb0a21c --- /dev/null +++ b/Step-04.md @@ -0,0 +1,106 @@ +# Step 04. 블록 해체 및 분류 (Block Decomposition) + +## 목적 +파일 전체가 아닌 블록 단위로 해체하여 Judge-Standard 기준으로 각 블록의 성격을 판단한다. +하나의 파일에서 프롬프트, 도메인, 코드도메인, 제외가 동시에 나올 수 있다. + +## 판단 전 반드시 숙지 +분류 기준은 Judge-Standard 위키를 따른다. +아래는 오판을 방지하기 위한 핵심 주의사항이다. + +### 프롬프트 판단 시 주의 +- .txt / .md 파일 전체가 프롬프트일 수 있다 → 파일 전체 내용을 읽고 판단한다 +- "당신은 ~입니다", "You are ~", "Act as ~" 로 시작하는 섹션 → 프롬프트 후보일 수 있으나, Judge-Standard 3요소(행동 지시, 가변 블록 포함)를 모두 충족하는지 반드시 추가 확인한다. 해당 문구만으로 프롬프트로 단정하지 않는다 +- API 호출 코드(`openai.ChatCompletion.create()`, `client.chat.completions.create()` 등)는 프롬프트가 아니다 → 제외 +- 한 줄짜리 인라인 f-string(`f"다음을 번역해줘:\n{text}"`)은 프롬프트가 아니다 → 제외 +- `messages` 리스트 내부의 `content` 값만 추출하여 판단한다 + +### 도메인 판단 시 주의 +- 도메인의 범위는 Judge-Standard를 따른다. 미리 한정하지 않는다 +- CSS/HTML/JS도 재사용 가능하면 도메인이다 +- .txt / .md 파일 안의 CSS 블록, HTML 구조, JS 함수도 도메인이 될 수 있다 + +### 코드도메인 판단 시 주의 +- Python def / class 단위로 독립 완결되는 것만 해당한다 +- 경로 설정, API 키, import 문만 있는 블록은 제외 +- if __name__ == "__main__" 블록은 제외 + +## 파일 유형별 해체 방식 + +### .txt / .md 파일 +- 파일 전체 내용을 읽는다 +- 섹션(##) 단위로 분리하여 각각 판단한다 +- 파일 전체가 하나의 프롬프트인 경우도 있다 (예: 작성_가이드.txt) +- 파일 안에 CSS/HTML/JS 블록이 섞여있으면 해당 블록도 별도 추출한다 + +### .py 파일 +- 멀티라인 문자열 변수(`"""..."""`) +- `PROMPT_`, `SYSTEM_`, `system_prompt` 등 프롬프트 관련 변수명의 값 +- `messages=[...]` 내부 content 값 +- `def` / `class` 단위 함수·클래스 +- 위 단위로 분리하여 각각 판단한다 + +### .html 파일 +- `