Skip to content

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: false

sync 항목 형식

단순 1:1

yaml
- source: ~/file.md
  target: ainote/path.md

Glob (디렉토리 + 패턴)

yaml
- source: ~/dir/
  pattern: "*.md"
  target: dest/{basename}
  type: glob

placeholder:

  • {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 만

다음

MIT License · ainote.dev