# Cloud Skills

재사용 가능하고 버전 관리된 절차를 점진적으로 회상하고, 연결된 에이전트 전반에서 구조화된 운영 런북을 해석합니다.

- Canonical: https://docs.xmemo.dev/ko/docs/concepts/cloud-skills
- Locale: ko-KR
- Content-Locale: ko-KR
- Canonical-Content-Digest: 049066d1073d736057a89262336d6fb1f3a45bde8716106959785c6f135bcab3
- Edition-Digest: 8a2a46276db7011572667546fd02d019aa32cf19ae5fe4fa8c329bd51de7af0f
- Source-Revision: sha256:ed4540a74de987fd5125f372ab4ee2ea3f4d70303dedb8cef36a3395d3de069a

## 절차적 메모리 및 스킬 아키텍처

Cloud Skills는 XMemo에서 사용자 작성 절차적 메모리를 제공하여 개발자와 팀이 표준 운영 절차(SOP), 런북, 체크리스트 및 재사용 가능한 프롬프트를 영구 스토리지에 직접 저장할 수 있도록 지원합니다. 저장된 후에는 지원되는 도구 전반의 연결된 에이전트가 에이전트별 설치나 수동 프롬프트 복사 없이 이를 검색, 회상 및 해석할 수 있습니다. 저장된 Cloud Skill은 에이전트 측 연결 브리지 역할을 하는 설치된 XMemo Skill 클라이언트 런타임(@xmemo/skill, node scripts/xmemo-skill.mjs)과 구별됩니다.

- Preview 기능: Cloud Skills는 현재 Memory Console(#skills)에서 Preview로 제공됩니다.
- 식별자 및 자산: 각 스킬은 고유한 skill_id, 읽기 쉬운 슬러그, 이름, 설명, 소유자 범위(Personal 또는 Team) 및 자산 상태(active 또는 archived)를 갖습니다.
- 불변 리비전 체인: 스킬에는 SkillRevision 스냅샷의 추가 전용(append-only) 시퀀스가 포함됩니다. 각 리비전은 revision_id, revision_number, instruction_body, canonical_hash 및 선택적 형식의 SkillComponent 리소스를 전달합니다.
- 크기 제한: 루트 지침 본문은 64 KiB UTF-8로 제한됩니다. 리비전에는 최대 50개의 선언된 컴포넌트가 포함될 수 있으며, 각 컴포넌트는 128 KiB로 제한됩니다.
- 컴포넌트 리소스 유형: 컴포넌트는 reference, example, template, document, artifact 및 script를 포함하는 명시적인 의미 체계 유형을 선언합니다.

## 게시 라이프사이클 및 팀 검토

Cloud Skill 리비전은 프로덕션 워크플로를 보호하고 협업 작성을 지원하기 위해 구조화된 라이프사이클을 통해 전환됩니다:

- draft: 공개 활성화 전 작성 및 개인 스테이징 중의 초기 리비전 상태입니다.
- proposed: Team 워크스페이스 내에서 작성된 리비전은 proposed 상태로 전환되어 팀 소유자 또는 관리자의 명시적 검토 및 활성화를 기다립니다.
- published: 에이전트 검색 및 기본 레벨 1 회상 대상이 되는 활성 리비전입니다. 특정 시점에 슬러그당 단 하나의 리비전만 published로 지정됩니다.
- deprecated: 오래되었거나 대체된 리비전은 deprecated로 표시하여 일몰을 알리는 동시에 과거의 재현 가능한 회상을 보존할 수 있습니다.
- 개인 대 팀 게시: Personal 워크스페이스에서는 게시 의도로 저장하면 즉시 published로 전환됩니다. Team 워크스페이스에서는 제안된(proposed) 리비전을 통해 검토되지 않은 절차 변경이 에이전트 워크플로를 변경하는 것을 방지합니다.

## 점진적 회상: Level 0, Level 1, Level 2

연결된 에이전트는 사용되지 않는 문서로 LLM 컨텍스트 창이 포화되는 것을 방지하기 위해 Progressive Recall을 사용하여 필요에 따라 스킬을 회상합니다:

- Level 0 (검색): 쿼리 검색은 전체 지침을 로드하지 않고 사용자 작업과 일치하는 가벼운 설명자(slug, name, description)를 반환합니다.
- Level 1 (루트 회상): 지정된 슬러그에 대한 스킬 루트 지침 및 컴포넌트 매니페스트를 회상하며, 기본적으로 게시된 리비전으로 설정되고 최신 리비전 폴백을 지원합니다.
- Level 2 (리소스 회상): 선언된 단일 컴포넌트(예: 체크리스트 템플릿 또는 참조 스키마)를 회상하며, 호출자가 리소스 분열(resource tearing)을 방지하기 위해 명시적인 revision_id를 제공해야 합니다.

```text
recall_cloud_skill(query="incident response")  # Level 0: lightweight descriptors
recall_cloud_skill(slug="incident-response-checklist")  # Level 1: root instructions + manifest
recall_cloud_skill(
  slug="incident-response-checklist",
  revision_id="<revision-id-from-level-1>",
  resource="templates/triage-template.md",
)  # Level 2: one pinned resource component
```

## 리비전 고정으로 리소스 분열 방지

스킬이 업데이트되면 XMemo는 기존 콘텐츠를 덮어쓰는 대신 다음 불변 리비전을 생성합니다. Level 1 루트 회상은 불변 revision_id 및 컴포넌트 매니페스트와 함께 루트 지침을 제공합니다. Level 2 리소스 요청은 호출자가 바로 해당 revision_id를 고정하도록 요구합니다. 에이전트가 워크플로를 실행하는 동안 작성자가 새 리비전을 게시하더라도 에이전트의 고정된 읽기는 처음에 시작된 정확한 스냅샷을 계속 확인하므로 리소스 분열이 제거됩니다.

```json
{
  "kind": "root",
  "data": {
    "skill_id": "skill_inc_triage_01",
    "revision_id": "rev_v1_inc_triage",
    "revision_number": 1,
    "canonical_hash": "c7b14d8e9f2a4c10...",
    "resources": [
      {
        "logical_path": "templates/triage-template.md",
        "type": "template",
        "content_hash": "e3b0c44298fc1c14..."
      }
    ]
  }
}
```

## 가져오기, 내보내기 및 작성 인터페이스

개발자는 웹 콘솔에서 대화형으로 Cloud Skills를 작성하거나 표준 배포 패키지에서 기존 스킬을 가져올 수 있습니다:

- 콘솔 작성: 마크다운 편집기 및 컴포넌트 관리를 통해 Memory Console(#skills)에서 대화형으로 스킬을 생성합니다.
- 패키지 가져오기: 표준 SKILL.md 파일(YAML 프론트매터 포함), 다중 파일 ZIP 아카이브 또는 URL(ClawHub 또는 GitHub)을 통한 원격 리포지토리를 가져옵니다.
- 리비전 차이 비교: 단어 수준의 diff를 통해 임의의 두 리비전 간 지침 변경 사항 및 컴포넌트 수정을 비교합니다.
- Source Capsule 내보내기: SKILL.md, 컴포넌트 리소스 및 메타데이터 매니페스트가 포함된 무손실 Source Capsule ZIP 아카이브로 모든 스킬 리비전을 내보냅니다.

## 에이전트 액세스 프로필 및 샌드박스 격리

권한이 부여된 에이전트는 지원되는 클라이언트 환경에서 계약상 정의된 MCP 도구를 통해 Cloud Skills에 접근합니다:

- 계약된 MCP 도구: recall_cloud_skill(읽기 전용) 및 save_cloud_skill(작성) 도구는 cursor-plugin 및 ordinary-full 클라이언트 프로필(config/mcp-documentation-contract.json)에 계약상 노출되어 있습니다. generic-public, chatgpt-public 또는 claude-code 프로필에는 노출되지 않습니다.
- 프롬프트 실행 절차: 대부분의 Cloud Skills는 코드 실행 없이 프롬프트 안내로 에이전트가 직접 해석하는 표준 운영 절차입니다.
- 샌드박스 실행 경계: execute_cloud_skill을 통한 선택적 백엔드 스크립트 실행은 SandboxExecutionEngine에 의해 제어되는 고급 서버 측 기능입니다(현재 어떤 클라이언트 프로필에도 노출되지 않음). 로컬 bubblewrap 컨테이너 격리가 없는 경우 실행은 SANDBOX_UNAVAILABLE과 함께 fail closed 처리됩니다.

## 가용성 및 라이프사이클 경계

계정에 절차적 Cloud Skills가 활성화된 경우 Cloud Skill 기능을 사용할 수 있습니다. 리비전은 불변의 콘텐츠 주소 지정 스냅샷이며, 변경 사항을 저장하면 이전 레코드를 덮어쓰지 않고 새 리비전이 생성됩니다. 후보 스킬이 존재하는 경우 콘솔에 명시적인 수동 승격이 필요한 검토 배너가 표시됩니다.

## ChatGPT 사용자

채팅에 전달자 토큰을 붙여넣지 않고도 XMemo 기본 설정, 프로젝트 사실, 결정 및 TODO에 대한 지속 가능한 액세스를 ChatGPT에 부여하세요.

ChatGPT/OpenAI 앱 OAuth 흐름을 통해 호스팅된 XMemo MCP 서버를 연결한 다음 XMemo 계정에 대한 메모리:읽기 및 메모리:쓰기 권한을 승인합니다.

종합 기본 설정이나 프로젝트 노트를 저장하고 새 채팅을 시작한 다음 작업을 계속하기 전에 XMemo를 통해 ChatGPT에 이를 불러오도록 요청하세요.

OAuth가 실패하거나 도구가 표시되지 않으면 호스트 앱의 MCP 서버에서 로그아웃하고 XMemo 서버 URL을 다시 연결한 후 직접 토큰을 생성하기 전에 다시 시도하세요.

## 부조종사/Codex 개발자

IDE와 CLI 에이전트 간에 리포지토리 결정, 코딩 규칙, 버그 수정 메모, 작업 기록을 전달합니다.

가능한 경우 VS Code / GitHub Copilot 및 Gemini CLI에 OAuth를 사용하세요. Copilot CLI, Codex, Cursor 또는 기타 직접 MCP 클라이언트의 경우 로컬 환경 또는 보안 저장소에 XMEMO_KEY를 유지하고 안정적인 XMEMO_AGENT_INSTANCE_ID를 설정하세요.

코드베이스 결정이나 버그 수정을 기록한 후 편집하기 전에 다음 IDE 또는 CLI 에이전트에게 관련 XMemo 컨텍스트를 기억하도록 요청하세요.

회수가 비어 있는 경우 선택한 MCP 구성 경로, 직접 클라이언트용 XMEMO_KEY 환경 변수 및 호스트 앱의 오래된 OAuth 자격 증명을 확인하세요.

## 팀/엔터프라이즈 파일럿 소유자

계정 제어, 소스 속성, 내보내기/삭제 워크플로, 검토자에게 안전한 설정 증거를 통해 공유 메모리를 평가합니다.

보호된 XMemo 작업 공간을 생성하거나 입력하고 승인된 사용자를 초대한 다음 준비 배지에 따라 OAuth 또는 범위가 지정된 직접 자격 증명을 통해 각 클라이언트를 연결합니다.

파일럿 멤버에게 가상 팀 메모리를 저장하고 XMemo에서 소스 속성을 확인한 다음 삭제/내보내기 및 지원 경로를 검토하도록 합니다.

구성원이 연결할 수 없는 경우 새 토큰을 발급하기 전에 역할 권한, OAuth 승인, 클라이언트 준비 상태 및 지원 지침을 확인하세요.

## 자율 에이전트 운영자

헤드리스 또는 예약 에이전트가 진행 상황을 기록하고, 이전 결정을 검색하고, 안정적이고 비밀이 아닌 인스턴스 ID를 유지하도록 합니다.

/api/v1/mcp/config/autonomous-agent를 가져옵니다. 실행기가 OAuth + 사용자 정의 헤더를 지원하는 경우 auth_modes.oauth를 선호합니다. 완전 헤드리스 러너에 대해서만 비밀 저장소의 XMEMO_KEY와 함께 auth_modes.xmemo_key를 사용하십시오.

XMemo에 진행 상황을 기록하는 하나의 합성 작업을 실행하고 실행기를 다시 시작한 다음 동일한 XMEMO_AGENT_INSTANCE_ID를 사용하여 해당 진행 상황을 호출하는지 확인합니다.

속성이 변경되거나 인스턴스 간에 분할된 경우 git 외부에서 XMEMO_AGENT_INSTANCE_ID를 유지하고 실행기가 시작할 때마다 이를 다시 생성하지 않는지 확인하세요.
