v1 설계 완료 · 구현 진행 중

Markdown 보관함을
벼리는 커맨드라인 도구

문서·링크·이미지·front matter·태그를 증분 색인하고 오류를 보고합니다. 안전한 수정과 정적 HTML 내보내기까지 — 전부 로컬에서. 계정도, 광고도, 원격분석도 없습니다.

Nim 2.2 · ORC SQLite 증분 색인 Windows · Linux · macOS 읽기 전용 우선 · 결정적 출력
powershell — vaultsmith
$ vaultsmith init D:\Notes
$ vaultsmith scan D:\Notes
  → 1,284 docs · 312 changed · 9,640 links resolved
$ vaultsmith check . --fail-on warning
  → VLT200 broken link  · guides/setup.md:42
  → VLT300 orphan asset · img/old-diagram.png
$ vaultsmith query . "tag:project broken:false"
$ vaultsmith fix . --rule VLT106 --dry-run
$ vaultsmith export . --out D:\Export
Capabilities

보관함의 무결성을 지키는 6가지

분석 전용 파서와 HTML 렌더러를 분리해, 외부 렌더러를 바꿔도 검사 결과는 그대로 유지됩니다.

📇

증분 색인

size·mtime 비교 후 변경 후보만 SHA-256 해시. 바뀐 문서만 파싱해 SQLite 인덱스를 트랜잭션으로 갱신합니다.

🔗

링크 · 자산 검사

깨진 내부 링크, 누락 이미지, orphan 자산, fragment·anchor 불일치, vault 외부 탈출 경로까지 잡아냅니다.

🧾

메타데이터 검증

front matter 파싱, 중복 제목·정규화 slug, 경로 대소문자 불일치, 태그 충돌, 잘못된 날짜를 점검합니다.

🛠️

안전한 수정

기본 dry-run. 백업 → expected hash 검사 → parse·patch·parse 재검증. 하나라도 실패하면 그 파일은 건드리지 않습니다.

🌐

HTML 내보내기

raw HTML 기본 차단, javascript URL 제거, 외부 링크 rel=noopener, 로컬 자산 복사, 변경분만 증분 export.

🔒

로컬 우선

계정·광고·원격분석 없음. 출력은 relative path 기준 결정적. 10,000 문서 초기 스캔 60초, 증분 100개 3초 목표.

CLI Contract

일곱 개의 명령어

읽기 전용 분석부터 명시적 --apply 수정까지, 동작이 예측 가능하도록 설계된 인터페이스.

init

.vaultsmith/config.json을 생성합니다. 기존 파일은 덮어쓰지 않습니다.

scan

기본 증분 색인. --full 전체 재해시·재파싱, --no-rules 인덱스만 갱신.

check

규칙을 평가하고 --fail-on 임계치에 따라 종료 코드를 반환합니다.

query

tag: path: broken: 등 v1 문법. 모호하면 임의 해석 대신 오류.

report / export

text·json·jsonl·html 보고서, 그리고 정적 사이트 HTML 내보내기.

fix / doctor

--apply 없이는 수정하지 않습니다. doctor는 권한·DB·경로 충돌을 진단합니다.

Rule Catalog

VLT 규칙 카탈로그

각 finding은 line 번호를 제외한 안정적 fingerprint를 가져, 단순 줄 이동으로 baseline이 깨지지 않습니다.

Parse

VLT001–005
  • VLT001 invalid UTF-8
  • VLT002 front matter 오류
  • VLT005 닫히지 않은 fence

Documents

VLT100–106
  • VLT102 중복 slug
  • VLT105 vault 외부 탈출
  • VLT106 경로 대소문자

Links

VLT200–206
  • VLT200 깨진 내부 링크
  • VLT201 누락 자산
  • VLT203 모호한 확장자 생략

Assets

VLT300–303
  • VLT300 orphan asset
  • VLT302 크기 초과
  • VLT303 위험한 파일명

Metadata

VLT400–403
  • VLT400 잘못된 날짜
  • VLT401 태그 충돌
  • VLT403 alias 충돌

설계는 끝났고, 이제 벼릴 차례입니다

구현은 GOALS.md의 12단계 /goal 순서대로 진행됩니다.