세션 도중 $HOME이 사라질 때: Claude 플러그인을 위한 지속 가능한 상태(Persistent State) 구축하기
요약
Claude Code와 Cowork 환경에서 사용자 행동을 분석하여 성장 퀘스트를 제공하는 'skill-tree' 도구 개발 과정을 다룹니다. 특히 휘발성 환경인 Cowork에서 상태를 유지하기 위해 $CLAUDE_PLUGIN_ROOT를 활용한 이중 경로 설계 방식을 설명합니다.
핵심 포인트
- Claude Code와 Cowork의 환경 차이에 따른 상태 지속성 문제 해결
- $CLAUDE_PLUGIN_ROOT를 활용한 휘발성 세션 데이터 보존 전략
- Anthropic의 연구를 기반으로 한 11가지 협업 행동 분류 및 시각화
- 7단계 오케스트레이션을 통한 실시간 행동 분석 및 아키타입 할당
세션 도중 $HOME이 사라질 때: Claude 플러그인을 위한 지속 가능한 상태(Persistent State) 구축하기
저는 몇 달 동안 Claude Code를 매일 사용해 왔지만, 제가 진정으로 발전하고 있는 것인지 아니면 그저 몇 가지 습관을 더 빠르게 반복하고 있는 것인지 알 수 없었습니다. Anthropic은 지난 2월, 9,830개의 Claude 대화에 걸쳐 관찰 가능한 11가지 협업 행동을 분류한 연구를 발표했습니다. 저는 저의 행동이 그 기준점(baseline)과 비교했을 때 어떤 모습인지 알고 싶었습니다.
그래서 skill-tree를 만들었습니다. 이 도구는 사용자의 Claude Code 또는 Cowork 세션 기록을 분석하여 동일한 11가지 행동을 분류하고, 7가지 아키타입(archetype) 카드 중 하나를 할당하며(박물관 예술 작품이 담긴 타로 카드 형태로 렌더링됨), 다음 세션을 위한 성장 퀘스트(growth quest)로 사용자가 아직 접해보지 않은 행동을 선택합니다. 여기서 흥미로운 엔지니어링 문제는 상태 지속성(state persistence)이었습니다.
_이중 경로 문제 (The dual-path problem)_
Claude Code는 안정적인 홈 디렉토리(home directory)를 가지고 있으므로, 세션 간에 성장 퀘스트를 지속시키는 것은 간단합니다. ~/.skill-tree/에 기록하면 됩니다. 하지만 Cowork는 그렇지 않습니다. Cowork의 $HOME은 휘발성(ephemeral)입니다. 세션 사이에 삭제됩니다. 만약 제가 Cowork의 $HOME에 퀘스트 상태를 기록한다면, 모든 세션이 처음부터 다시 시작될 것이며, 이는 "아직 시도해보지 않은 것은 무엇인가"라는 메커니즘의 목적을 완전히 상실하게 만듭니다.
해결책은 이중 상태 경로(dual-state-path) 설계였습니다. Cowork에서 플러그인은 $HOME 대신 $CLAUDE_PLUGIN_ROOT/.user-state/에 기록합니다. $CLAUDE_PLUGIN_ROOT는 $HOME이 유지되지 않는 Cowork의 세션 경계를 넘어 생존합니다. Claude Code는 ~/.skill-tree/ 경로를 사용합니다.
SessionStart 훅은 현재 실행 중인 환경이 어디인지 확인하고 그에 따라 경로를 라우팅합니다.\n\n
`bash
Claude Code 경로 (안정적인 $HOME)
~/.skill-tree/quest-state.json
Cowork 경로 ($HOME은 일시적이며, CLAUDE_PLUGIN_ROOT는 지속됨)
$CLAUDE_PLUGIN_ROOT/.user-state/quest-state.json
`
\n\n이는 환경 간에 행동 분류(behavior classification) 및 아키타입 카드(archetype card) 로직을 동일하게 유지할 수 있음을 의미합니다. 오직 상태 기록 경로(state write path)만 다를 뿐입니다.\n\n__나머지 파이프라인 (The rest of the pipeline)_*\n\n7단계 오케스트레이션(orchestration)은 30~60초 내에 실행됩니다: 세션 파일 찾기, 사용자 메시지 추출, 원격 분류기(Fly.io 상의 Claude Haiku)로 전송, 아키타입(archetype) 할당, 내러티브(narrative) 합성, 카드 렌더링, 안정적인 URL 반환. 각 분석 결과는 고유한 호스팅 URL을 가집니다 — 실제 예시는 skill-tree-ai.fly.dev/fixture/illuminator 에서 확인할 수 있습니다.\n\n행동 분류 체계(behavior taxonomy)는 Dakan & Feller의 4D AI 유창성 프레임워크(4D AI Fluency Framework: Description, Discernment, Delegation — 네 번째 축인 Diligence는 채팅 로그에서 관찰할 수 없음)에서 가져왔습니다. 모집단 기준선(population baseline)은 9,830개의 대화를 분석한 Anthropic의 2026년 2월 연구 결과입니다.\n\nClaude Code에 설치하기:\n
bash claude plugin marketplace add robertnowell/ai-fluency-skill-cards claude plugin install skill-tree-ai@ai-fluency-skill-cards
\n또한 Cursor, VS Code, Windsurf를 위한 MCP 서버(npm install skill-tree-ai)로도 사용할 수 있습니다.\n\nhttps://github.com/robertnowell/ai-fluency-skill-cards
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기