Community코딩 & 개발github.com

ck: Claude 컨텍스트 관리 스킬

Claude Code 세션 간에 프로젝트 컨텍스트를 저장, 재개 및 관리할 수 있는 스킬입니다.

ck: Claude 컨텍스트 관리 스킬란 무엇인가요?

이 스킬은 Claude Code나 Cursor 같은 AI 에이전트 환경에서 여러 프로젝트의 컨텍스트를 체계적으로 저장하고 관리할 수 있게 해줍니다. 프로젝트 등록(`/ck:init`), 세션 상태 저장(`/ck:save`), 이전 작업 재개(`/ck:resume`), 프로젝트 정보 확인(`/ck:info`, `/ck:list`), 프로젝트 삭제(`/ck:forget`), v1 데이터를 v2로 마이그레이션(`/ck:migrate`)하는 명령어를 제공합니다. 핵심 데이터는 `~/.claude/ck/contexts/<name>/context.json`에 구조화된 JSON(v2) 형식으로 저장되며, 모든 수정은 전용 스크립트를 통해서만 이루어집니다. 또한 `SessionStart` 훅을 통해 세션 시작 시 자동으로 이전 컨텍스트를 불러오고, 저장되지 않은 세션이나 git 활동 변화를 감지하여 작업 연속성을 크게 향상시킵니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add mowgliph/everything-agents-skills

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

데이터 구조

~/.claude/ck/
├── projects.json              ← 경로 → {name, contextDir, lastUpdated}
└── contexts/<name>/
    ├── context.json           ← SOURCE OF TRUTH (구조화된 JSON, v2)
    └── CONTEXT.md             ← 생성된 뷰 — 직접 수정 금지

명령어

/ck:init — 프로젝트 등록

node "$HOME/.claude/skills/ck/commands/init.mjs"

스크립트는 자동으로 감지된 정보를 JSON으로 출력합니다. 이를 아래와 같은 확인 초안으로 사용자에게 제시하세요:

다음 정보를 찾았습니다 — 수정하거나 확인해 주세요:
Project:     <name>
Description: <description>
Stack:       <stack>
Goal:        <goal>
Do-nots:     <constraints 또는 "None">
Repo:        <repo 또는 "none">

사용자의 승인을 기다리세요. 수정 사항을 반영합니다. 그런 다음 확인된 JSON을 save.mjs --init에 파이프로 전달하세요:

echo '<confirmed-json>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init

확인된 JSON 스키마: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"repo":"..." }


/ck:save — 세션 상태 저장

LLM 분석이 필요한 유일한 명령어입니다. 현재 대화를 분석하세요:

  • summary: 한 문장, 최대 10단어, 완료한 작업
  • leftOff: 현재 작업 중이던 내용 (특정 파일/기능/버그)
  • nextSteps: 구체적인 다음 단계의 정렬된 배열
  • decisions: 이 세션에서 내린 결정의 배열 {what, why}
  • blockers: 현재 차단 항목 배열 (없으면 빈 배열)
  • goal: 이 세션에서 변경된 경우에만 업데이트된 goal 문자열, 그 외에는 생략

사용자에게 요약 초안을 보여주세요: "Session: '<summary>' — 저장할까요? (yes / edit)" 확인을 기다리세요. 그런 다음 save.mjs에 파이프로 전달하세요:

echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"

JSON 스키마 (정확): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]} 스크립트의 stdout 확인 메시지를 그대로 표시하세요.


/ck:resume [name|number] — 전체 브리핑

node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]

출력을 그대로 표시하세요. 그런 다음 질문: "여기서 계속할까요? 아니면 변경된 사항이 있나요?" 사용자가 변경 사항을 보고하면 → 즉시 /ck:save를 실행하세요.


/ck:info [name|number] — 빠른 스냅샷

node "$HOME/.claude/skills/ck/commands/info.mjs" [arg]

출력을 그대로 표시하세요. 후속 질문은 없습니다.


/ck:list — 포트폴리오 보기

node "$HOME/.claude/skills/ck/commands/list.mjs"

출력을 그대로 표시하세요. 사용자가 숫자나 이름으로 응답하면 → /ck:resume을 실행하세요.


/ck:forget [name|number] — 프로젝트 제거

먼저 프로젝트 이름을 확인하세요 (필요시 /ck:list 실행). 질문: "'<name>'의 컨텍스트가 영구 삭제됩니다. 계속하시겠습니까? (yes/no)" 예(yes)이면:

node "$HOME/.claude/skills/ck/commands/forget.mjs" [name]

확인 메시지를 그대로 표시하세요.


/ck:migrate — v1 데이터를 v2로 변환

node "$HOME/.claude/skills/ck/commands/migrate.mjs"

먼저 dry run을 수행하세요:

node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run

출력을 그대로 표시하세요. 모든 v1 CONTEXT.md + meta.json 파일을 v2 context.json으로 마이그레이션합니다. 원본 파일은 meta.json.v1-backup으로 백업되며 — 아무것도 삭제되지 않습니다.


SessionStart 훅

~/.claude/skills/ck/hooks/session-start.mjs 훅은 세션 시작 시 프로젝트 컨텍스트를 자동으로 로드하려면 ~/.claude/settings.json에 등록해야 합니다:

{
  "hooks": {
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
    ]
  }
}

훅은 세션당 약 100 토큰을 주입합니다 (간결한 5줄 요약). 또한 저장되지 않은 세션, 마지막 저장 이후의 git 활동, CLAUDE.md와의 goal 불일치를 감지합니다.


규칙

  • Bash 호출에서 ~는 항상 $HOME으로 확장하세요.
  • 명령어는 대소문자를 구분하지 않습니다: /CK:SAVE, /ck:save, /Ck:Save 모두 동작합니다.
  • 스크립트가 종료 코드 1로 종료되면, 그 stdout을 오류 메시지로 표시하세요.
  • context.json 또는 CONTEXT.md를 직접 편집하지 마세요 — 항상 스크립트를 사용하세요.
  • projects.json이 손상된 경우 사용자에게 알리고 {}로 초기화할 것을 제안하세요.

관련 스킬