archify로 저장소 구조를 ASCII 트리 대신 눌러 보는 다이어그램으로 받는 법
| 받은 답 | 남는 파일 | 칸마다 출처 줄 | |
|---|---|---|---|
| 스킬 없이 | 글·ASCII 트리 | 없음 | 없음 |
| 깔고 이름 없이 | 글·ASCII 트리 | 없음 | 없음 |
| /archify 붙임 | HTML 다이어그램 | .archify/ 폴더 | 있음 |
/archify를 붙이면 다이어그램을 받는다
스킬 없이는 ASCII 트리와 표가 든 답이 터미널에 남고 끝납니다. /archify를 붙이면 .archify/ 폴더에 HTML 한 파일이 생기고, 칸을 누르면 그 칸의 출처 파일과 줄 번호가 뜹니다.
archify는 Claude Code가 저장소를 읽고 그린 다이어그램을 검사한 뒤 HTML 한 파일로 내주는 스킬입니다. 프로젝트 폴더에서 아래 한 줄을 돌리면 .claude/skills/archify에 깔립니다. Node 18 이상과 브라우저 검사에 쓸 Chrome·Chromium·Edge 중 하나가 있어야 합니다.
npx skills add https://github.com/tt-a1i/archify --skill archify --agent claude-code --yes프로젝트에 깔면 저장소에 .claude/skills/archify(약 18MB)와 skills-lock.json이 생기고, 다이어그램을 만들 때마다 .archify/ 아래에 폴더가 하나씩 쌓입니다. 커밋하지 않으려면 셋을 .gitignore에 넣고, 여러 저장소를 둘러볼 때는 접힌 칸의 --global로 깝니다.
질문 앞에 /archify를 붙여 보냅니다.
/archify 이 저장소 구조를 한눈에 보이게 설명해 줘이름을 빼고 같은 문장만 보내면, 스킬을 깔아 둔 폴더에서도 세 번 모두 스킬을 부르지 않고 글로 답합니다.
다이어그램 종류는 Claude가 질문을 보고 고릅니다. "구조"를 물으면 세 번 중 두 번은 위 같은 폴더 트리를, 한 번은 모듈 관계도를 그립니다.
모든 프로젝트에서 쓰거나 업데이트 확인을 끄려면
--global을 붙이면 ~/.claude/skills/archify에 깔려 어느 프로젝트에서든 부를 수 있습니다. 깐 뒤 doctor가 Archify is ready.로 끝나면 됩니다.
npx skills add https://github.com/tt-a1i/archify --skill archify --agent claude-code --global --yesnode ~/.claude/skills/archify/bin/archify.mjs doctorarchify는 다이어그램을 만들 때 하루 한 번 정해진 주소에서 최신 버전 정보를 받아, 새 버전이 있으면 답 끝에 알립니다. 내려받거나 설치하지는 않고, 환경 변수 ARCHIFY_UPDATE_CHECK_DISABLED=1을 두면 이 확인도 꺼집니다.
검사를 통과해야 파일이 바뀐다
HTML 파일은 archify의 finalize 명령이 원본을 검사한 뒤에야 바뀝니다. 원본은 Claude가 먼저 쓰는 candidate.json이라는 JSON 파일이고, 칸·연결과 칸마다 출처 파일·줄이 들어 있습니다. Claude는 원본에 저장소 커밋 하나를 고정해 적고, 출처 줄 번호는 그 커밋의 파일에서 셉니다.
candidate.json이 원본 검사를 통과해야 HTML 파일이 바뀐다
모듈 관계도를 그린 한 번은 router 칸이 lib/ 테두리 안에 들어가 첫 검사에서 떨어졌습니다. Claude는 테두리를 빼고 다시 돌려 통과했고, 뺀 것을 답 끝에 적었습니다. 고치다 뺀 것이 있는지는 답 끝 몇 줄에서 봅니다.
검사는 출처 줄이 고정한 커밋에 있는지까지만 보고, 칸 설명이 그 줄 내용과 맞는지는 보지 않습니다. 위 트리의 application.js 칸은 설명에 set·render를 적었지만, 출처 줄 셋 중 어느 것도 그 두 함수를 가리키지 않습니다. 근거로 쓸 칸은 눌러서 출처 줄을 열어 봅니다.
검사가 계속 떨어지거나 브라우저가 없다면
같은 문제를 두 번 고쳐도 남으면 Claude는 측정값을 보고 한 번 더 고친 뒤, 남은 차이를 답에 적고 멈춥니다(실패 처리 규칙). 검사 기록은 HTML 옆 <이름>.finalize-summary.json에 남습니다.
"gates": { "validate": "fail", "deliver": "not-run", "check": "not-run", "browser-check": "not-run"},"diagnostics": [{ "code": "layout/boundary-encloses-non-member", "subject": { "component": "router" }, "supportedFixes": ["move \"router\" outside the boundary frame"]}]gates에 적힌 네 관문을 차례로 지나다 한 곳에서 떨어지면 뒤 관문은 돌지 않고, 진단마다 규칙 이름 code와 고칠 방법 supportedFixes가 붙습니다.
마지막 관문인 브라우저 검사는 Chrome·Chromium·Edge 중 하나를 띄워 폭 1440px 이상인 화면 넷에서 가로 넘침과 글자 크기를 잽니다. 휴대폰 폭은 재지 않아서 좁은 화면에서는 도구 막대 끝이 잘릴 수 있습니다.
브라우저가 하나도 없으면 HTML은 만들어져도 finalize가 통과로 끝나지 않습니다. 기본 위치가 아닌 곳에 깐 브라우저는 ARCHIFY_CHROME에 실행 파일 경로를 적어 알려 줍니다.
요청 흐름은 질문에 적어 받는다
요청이 지나는 길을 보려면 질문에 그 흐름을 적습니다. 시퀀스 다이어그램은 참여자를 세로줄로 세우고, 주고받는 호출을 위에서 아래로 그린 그림입니다. 아래 질문에 Claude는 이 그림을 골랐습니다.
/archify GET 요청 하나가 app.get으로 등록한 핸들러까지 가는 흐름을 그려 줘다이어그램은 등록, 요청 진입, 매칭·디스패치, 일치 없음·오류의 네 구간으로 나뉩니다. 마지막 구간은 경로가 맞지 않거나 핸들러가 next(err)를 부를 때 finalhandler가 404나 500을 보내는 길입니다.
출처는 고정한 커밋에 든 파일만 달 수 있습니다. Express가 의존하는 router 패키지는 이 저장소에 없어서, 이번 다이어그램의 매칭·디스패치 구간에는 Express가 router를 부르는 줄이 출처로 붙었습니다. 그 구간의 동작을 근거로 쓰려면 router 저장소의 코드를 따로 열어 봅니다.
큰 저장소는 질문에 폴더 하나나 흐름 하나처럼 범위를 적습니다. archify 규칙대로 Claude는 저장소 전체를 훑지 않고 질문에 닿는 코드만 이어 읽습니다.