manifest.yml 작성
🚧 설계 단계 — 아직 구현 안 됨
이 페이지는 ainote 의 향후 기능을 미리 문서화한 것입니다. 현재 @ainote/mcp v1.1.x 에는 vault / sync 도구가 포함돼 있지 않습니다. 도구 호출 시 Tool not found 에러를 받게 됩니다.
각 디바이스의 sync 매핑 정책. 로컬 파일 ↔ ainote path 명시적 정의.
위치
~/.claude/ainote-sync/manifest.yml같은 디렉토리에 device.id (UUID) + state.json (last-known sync 상태).
최소 예시
yaml
device_id: macmini-2026-04-A1B2
hub:
api: https://api.ainote.dev/api/mcp
auth_env: AINOTE_API_KEY
sync:
- source: ~/CLAUDE.md
target: global/CLAUDE.md전체 예시
yaml
device_id: macmini-2026-04-A1B2
hub:
api: https://api.ainote.dev/api/mcp
auth_env: AINOTE_API_KEY
sync:
# 글로벌 메모리 — glob (모든 .md)
- source: ~/.claude/projects/-Users-seunghan/memory/
pattern: "*.md"
target: global/memory/{basename}
type: glob
# 1:1 명시
- source: ~/CLAUDE.md
target: global/CLAUDE.md
- source: ~/.claude/PERSONAS.md
target: global/PERSONAS.md
# 디렉토리 통째 (재귀)
- source: ~/.claude/skills/seunghan-32inch-ppt/
pattern: "**/*"
target: global/skills/seunghan-32inch-ppt/{relpath}
type: glob_recursive
# 프로젝트별 메모리 (모든 프로젝트)
- source: ~/.claude/projects/{project}/memory/
pattern: "*.md"
target: "{project_name}/{basename}"
type: glob_per_project
# 프로젝트 root CLAUDE.md (화이트리스트)
- source: ~/launchcrew/CLAUDE.md
target: launchcrew/CLAUDE.md
- source: ~/tennis_bracket/CLAUDE.md
target: tennis-bracket/CLAUDE.md # snake → kebab
# 명시적 제외
skip:
- ~/.claude/COMMANDS.md
- ~/.claude/FLAGS.md
- ~/.claude/RULES.md
- ~/.claude/MCP.md
# 원격에 있지만 더 이상 받지 않을 (deprecated)
deprecated_remote:
- krx_listing_backups/
- krx_listing/ # snake (kebab 으로 마이그)
safety:
max_delete_pct: 10
max_overwrite_files: 5
dry_run_default: falsesync 항목 형식
단순 1:1
yaml
- source: ~/file.md
target: ainote/path.mdGlob (디렉토리 + 패턴)
yaml
- source: ~/dir/
pattern: "*.md"
target: dest/{basename}
type: globplaceholder:
{basename}— 파일명만 (MEMORY.md){filename}— 확장자 제외 (MEMORY){relpath}— source 기준 상대경로
재귀 Glob
yaml
- source: ~/.claude/skills/my-skill/
pattern: "**/*"
target: skills/my-skill/{relpath}
type: glob_recursive프로젝트별 (특수)
yaml
- source: ~/.claude/projects/{project}/memory/
pattern: "*.md"
target: "{project_name}/{basename}"
type: glob_per_project{project} 는 디렉토리 이름, {project_name} 은 변환 (snake→kebab, prefix 제거 등).
변환 규칙 (선택)
yaml
- source: ~/{project}/CLAUDE.md
target: "{project_kebab}/CLAUDE.md"
transform:
project_kebab:
from: project
replace:
"_": "-"검증
manifest 변경 후:
bash
ainote sync_validate체크:
- YAML 문법
- source 경로 존재
- target 충돌 (같은 target 에 두 source)
- circular reference
다른 디바이스의 manifest
각 디바이스가 독립적 manifest. 한 hub 에 여러 manifest 가능 → spoke 마다 다른 sync 범위.
예:
- 맥미니: 모든 프로젝트 sync
- iPad: 메모리만 (project CLAUDE.md 제외)
- linux desktop: vault 만