| name | distify |
| description | 잘 만들어 쓰고 있는 자산 한 벌(스킬, 도구와 지식 세트, 방법론 문서 묶음)의 공개판을 만든다. 받는 사람이 바로 시작할 수 있게 다듬고, 내부 정보는 게이트로 지킨다. 자산 분류, 결합 제거, 지식 골격화, 자기 완결화, 정합 게이트, 받는 사람 재독, 유출 게이트 등록 순서를 강제. 호출은 /distify {자산 경로나 이름}. md 문서 한 건짜리 외부용 리라이팅 절차가 따로 있다면 그쪽 담당. |
| when_to_use | 자산 공개판 만들기, 외부 배포용으로 정리, 유출 게이트 적용. 문서 한 건은 rewrite-external. |
| disable-model-invocation | true |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion |
distify, 자산의 공개판 만들기
잘 만들어 쓰고 있는 자산 한 벌의 공개판을 만든다. 조직 밖 사람이 받아서 바로 시작할 수 있게 다듬고, 내부 정보는 따라 나가지 않게 게이트로 지킨다. 산출 위치는 공개 배포 디렉터리(예를 들어 dist/{이름}/). 이 작업의 본질은 표기 정리가 아니라 "받는 사람이 이것만 보고 시작할 수 있는가"를 만드는 일이며, 아래 파이프라인을 순서대로 밟고 게이트를 건너뛰지 않는다.
실측 배경: 방법론 스킬(문서형)과 PR 리뷰 봇(도구형)의 공개판 제작 실측에서 반복된 실수 3건이 이 스킬의 게이트가 됐다. 내부 라벨과 줄번호 잔존(받는 사람은 열어볼 수 없는 참조), 문구 정리가 코드 파싱과 어긋난 버그, 유출 게이트 미등록.
대상
- 스킬 폴더, 도구와 스크립트 세트, 방법론 문서 묶음처럼 여러 파일이 한 벌인 자산
- md 문서 한 건이면 이 스킬 대상이 아니다. 단일 문서 리라이팅 절차가 따로 있으면 그쪽으로
- 이미 배포된 공개판의 갱신(내부 원본이 바뀐 뒤 재유도)도 대상. 이때는 기존 공개판 폴더를 임시 위치에 백업하고 시작한다
원칙
- 원본 자산은 Read만 한다. 공개판은 배포 디렉터리에 새로 쓴다
- 사용자 발화 원문 인용은 한 글자도 바꾸지 않는다. 인용 밖 설명만 손댄다
- 추상화 범위(무엇을 견본으로 남기고 어디까지 범용화하나)는 스킬이 단독으로 정하지 않는다. 표로 제시하고 사용자와 확정한다
- 민감정보 검증이 0건이 되기 전에는 완료를 선언하지 않는다
파이프라인
1. 자산 분류
자산 전체를 훑고 세 갈래 표를 만들어 사용자와 확정한다.
| 갈래 | 예 |
|---|
| 나갈 것 | 엔진 스크립트, 리뷰 골격, 방법론 본문, 형식 견본 |
| 남을 것 (절대 제외) | 소스 clone, 실제 산출물(리뷰와 리포트), 실명과 개인 집계, 조직 내부 지식 |
| 골격화할 것 | 조직 지식(컨벤션과 도메인 문서), 마스킹 규칙, 환경 설정 |
문서형(다듬기가 곧 표기와 참조 정리)인지 도구형(결합 제거와 골격화가 필요)인지 여기서 판정한다. 도구형이면 문서형보다 규모가 훨씬 크다는 것을 사용자에게 미리 알린다.
2. 결합 제거
- 하드코딩을 걷어낸다. 절대경로, 조직 리포명, base 브랜치명 같은 것은 환경변수나 상대경로나 플레이스홀더로 바꾸고, 없으면 안내하고 멈추게 한다
- 민감 패턴을 grep 한다. 자기 조직의 목록을 만들어 쓴다. 고객명과 인명, 내부 도메인과 IP 대역, 계정과 자격증명 흔적, 내부 문서 경로. 도구가 못 잡는 언어권 문자열(비ASCII 이름 같은 것)은 별도 grep으로 챙긴다
- 마스킹 로직이 자산 안에 하드코딩되어 있으면 규칙을 example 파일로 빼고 코드와 분리한다
3. 지식 골격화 (도구형만)
- 조직 지식은 빈 골격과 example/ 견본으로 바꾼다. 견본 첫머리에 "이렇게 자기 것으로 바꾸세요" 안내를 담는다
- 엔진은 지식이 비어 있으면 실행을 멈추고 README의 채우기 안내를 가리키게 한다
- README에 설치, 지식 채우기, 실행, 운영 패턴을 담는다. 운영 패턴에는 실수 방지(주기 실행에 게시를 붙이지 않기 같은 것)를 포함한다
4. 자기 완결화
- 조직이나 개인의 문서 표기와 참조 정책이 있으면 적용한다. 공통으로 권장하는 기준은 이렇다. 특수기호와 특수 번호기호 대신 일반 표기, 같은 문서 안에서 독자를 이동시키는 참조 대신 그 자리에 다시 서술, 이름 있는 대상은 라벨("M0" 같은 것) 대신 이름으로 지칭
- 죽은 참조를 없앤다. 동봉되지 않는 파일의 줄번호, 함께 배포되지 않는 상대 링크, 내부 문서 경로
- 원문 인용은 보존한다. 인용 안에 특수기호가 있어도 그대로 둔다
5. 정합 게이트
문구를 고친 파일이 코드의 파싱이나 형식 계약과 맞물려 있으면, 고친 형식을 코드가 여전히 처리하는지 대조한다. 실측 사례로, 리뷰 제목의 em dash를 쉼표로 바꾸자 봇의 제목 파서가 어긋났다. 프롬프트와 템플릿과 파서는 한 몸으로 검토한다.
6. 받는 사람 재독
작성자 모드를 벗어나 처음 받은 사람의 눈으로 한 번 다시 읽는다.
- README만으로 설치와 시작이 되는가. 채울 것이 무엇인지 명확한가
- 내부 라벨, 내부 맥락 전제, 받는 쪽이 열어볼 수 없는 참조가 남지 않았는가
- 파생본 표기를 남긴다. 원본에서 파생됐다는 사실과 마지막 동기 날짜를 적되 내부 경로는 노출하지 않는다
- LICENSE 필요 여부를 사용자에게 확인한다
7. 마감 (등록과 검증)
- 검증 grep을 돌리고 전부 0건을 확인한다. 조직과 고객 문자열, 특수기호와 원문자(원문 인용 제외), 내부 경로
- 공개판 동기화와 유출 게이트 스크립트가 있으면 새 공개판을 스캔 대상에 등록한다. 없으면 이 단계의 검증 grep이 최소 게이트이므로 패턴 목록을 배포 디렉터리에 남겨 다음 작업 때 재사용한다
- 등록 전에 그 폴더를 유출 패턴으로 실측한다. 정당한 언급이 패턴에 걸리는 오탐이면 등록 대신 제외하고 스크립트 주석으로 사유를 남긴다
- 게이트를 실행해 통과를 확인하고 결과를 보고한다
완료 보고
표로 보고한다. 파일별 처리(다듬기, 골격화, 제외), 검증 결과(패턴별 0건), 등록 상태, 사용자에게 남긴 판단(LICENSE, 이름, 공개 위치).
경계 (유사 작업과 구분)
| 작업 | 담당 |
|---|
| md 문서 한 건을 외부용으로 리라이팅 | 단일 문서 리라이팅 절차 (있다면) |
| 이미 만든 공개판의 일상 동기화와 유출 게이트 | 동기화 스크립트 (있다면) |
| 자산 한 벌 공개판의 최초 제작과 갱신 | 이 스킬 |