본문으로 건너뛰기
claudemods

Pin Memo: 입력창 위에 Claude Code 고정 메모와 할 일을

/pin으로 Claude Code 입력창 위에 메모와 클릭 가능한 할 일 체크박스를 고정하고 세션별로 저장합니다.

권한

  • UI 변경Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
  • 명령어/도구 추가사용자나 Claude가 호출할 수 있는 새 슬래시 명령어나 도구를 등록합니다($.command.register / $.tool.register).
  • 데이터 저장플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).
테스트 버전
v2.1.303
마지막 테스트
필요 버전
Claude Code ≥ 2.1.287
표시 위치
프롬프트 위

Claude Code 안에서 설치:

/plugin install pin-memo --marketplace YeonwooSung/my-claude-code-mods
모든 설치 방법 ↓

이 모드는 무엇을 하나요?

Pin Memo는 Claude Code에서 고정 메모를 쓸 수 있게 해 주는 커뮤니티 모드로, 작성자는 YeonwooSung(GitHub)입니다. my-claude-code-mods 모음집에 들어 있는 플러그인 중 하나입니다. /pin Remember to run tests를 입력하면 메모가 입력창 위의 청록색 테두리 밴드에 남아, 대화가 스크롤되어도 계속 보입니다.

메모는 할 일로 만들 수도 있습니다. /pin - [ ] Check login flow는 체크되지 않은 항목을, /pin - [x] Update docs는 완료된 항목을 추가합니다. 완료된 할 일은 흐리게 표시되고 취소선이 그어진 채 계속 보이며, 밴드 제목에는 고정된 항목 수와 완료된 수가 표시됩니다. [ ] 상자를 클릭하거나, ctrl+x tab으로 밴드에 포커스를 주거나, /pin toggle <id>로 체크할 수 있습니다.

목록은 세션에 속합니다. 작업 폴더와 세션 ID를 키로 플러그인 전용 저장소에 저장되므로, 같은 폴더에서 같은 세션을 재개하면 메모가 돌아오고 새 세션이나 /clear는 빈 목록으로 시작합니다. 취지는 저희의 After 모드와 비슷하지만, 이쪽은 단순한 목록입니다. 아무것도 예약하지 않고 메모를 Claude에게 보내지도 않습니다. 밴드는 터미널과 데스크톱 앱에 그려지며, 작성자에 따르면 VS Code 채팅과 헤드리스 세션에서는 명령과 저장된 목록을 사용할 수 있습니다.

데모

녹화에서는 작은 데모 프로젝트에서 모드를 불러온 Claude Code를 시작하고, 모델 턴 없이 /pin 명령을 네 번 실행합니다. 먼저 /pin Remember to run tests로 일반 메모를 고정하면 Claude Code가 "메모 #1 고정"이라고 확인하고, 제목이 "핀 1 (완료 0)"인 밴드가 나타납니다. 그다음 할 일 두 개, - [ ] Check login flow와 - [ ] Update docs를 추가하면 밴드가 세 줄로 늘어납니다. 마지막으로 /pin toggle 3이 마지막 할 일을 체크하면 제목이 "핀 3 (완료 1)"로 바뀌고 그 줄은 흐려지며 취소선이 생깁니다. 녹화에서는 체크박스 버튼이 각 할 일 텍스트 바로 윗줄에 그려집니다.

설치

설치 블록의 어떤 방법이든 사용할 수 있으며, 모두 작성자 본인의 마켓플레이스에서 바로 설치합니다. 무언가를 고정하면 밴드가 나타나고, /pin은 세션이 시작될 때 등록됩니다.

$ install pin-memo

Claude Code 2.1.287 이상 필요

작성자의 마켓플레이스에서 설치: YeonwooSung/my-claude-code-mods

  1. 1.Claude Code 안에서 한 줄로

    /plugin install pin-memo --marketplace YeonwooSung/my-claude-code-mods

    실행 중인 세션(v2.1.275 이상)에 붙여 넣으세요. Claude Code가 먼저 마켓플레이스 추가 여부를 묻습니다.

  2. 2.셸에서 설치

    claude plugin marketplace add YeonwooSung/my-claude-code-mods
    claude plugin install pin-memo@my-claude-code-mods

    그런 다음 이미 열려 있는 세션에서 /reload-plugins를 실행하세요.

  3. 3.설치하지 않고 사용해 보기

    git clone https://github.com/YeonwooSung/my-claude-code-mods
    claude --plugin-dir ./my-claude-code-mods/pin-memo

    한 세션에서만 모드를 불러옵니다. 설정에는 아무것도 추가되지 않습니다.

작동 방식

hooks/register.tsx의 어댑터가 session.start에서 /pin을 등록하고, command.run에서 응답하며, AbovePrompt 위치에 밴드를 렌더링합니다. 저장 키는 폴더와 세션 ID로 만들어지며 hooks/core/controller.ts에 있습니다.

export function storeKey(cwd: string, id: string): string {
  if (!cwd || !id || !/^(?:\/|[A-Za-z]:[\\/])/.test(cwd)) throw new Error('세션 폴더와 ID를 확인할 수 없습니다.')
  // ...trailing slashes are trimmed from the folder...
  return `pin-memo:v1:${JSON.stringify([folder, id])}`
}

명령은 hooks/core/memo.ts의 순수 함수로 해석되고 큐를 통해 차례로 실행되므로, 빠르게 입력한 명령도 모두 저장됩니다. 변경 사항은 저장소에 쓴 뒤에야 완료로 보고되며, 쓰기에 실패하면 이전 상태가 유지되고 오류 토스트가 나타납니다. 검증에 실패한 저장 문서는 오류로 표시되고 /pin clear를 실행하기 전까지 덮어쓰이지 않습니다. 오래된 체크박스 핸들은 현재 세션과 대조되므로, 만료된 클릭이 다른 세션의 목록을 바꿀 수 없습니다. 프롬프트 위에 설문이 열려 있으면 밴드는 자리를 양보합니다.

사용자 지정

/config에는 옵션이 없습니다. 명령은 /pin <memo>, /pin add <memo>(명령어로 시작하는 문장용), /pin list, /pin toggle|check|uncheck|remove <id>, /pin edit <id> <memo>, /pin clear, /pin help입니다. 체크박스 표시 없이 메모를 수정하면 할 일이 다시 일반 메모로 바뀝니다. 모양을 바꾸려면 register.tsx의 색상(테두리 #62B8AD, 배경 #1D2029)이나 hooks/core/view.ts와 hooks/core/memo.ts의 한국어 문구를 수정하세요.

권한 및 안전

실행하기 전에 플러그인이 실행할 수 있는 모든 파일을 읽었습니다. .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx, hooks/core/controller.ts, memo.ts, view.ts, 그리고 테스트입니다. 플러그인에는 package.json, 설치 스크립트, 바이너리, 번들된 코드가 없고 읽지 못한 부분도 없습니다.

UI를 변경합니다는 입력창 위의 밴드를 뜻합니다. 명령을 추가합니다는 /pin을 뜻합니다. 모드는 $.session.cwd와 $.session.id로 저장 키를 만들고 $.store로 목록을 저장합니다. 네트워크를 쓰지 않고, 프로세스나 셸 명령을 실행하지 않으며, 파일을 쓰지 않고, 환경 변수나 비밀 정보를 읽지 않고, 텔레메트리를 보내지 않으며, 백그라운드 서비스를 실행하지 않고, 도구 호출이나 프롬프트를 차단하거나 바꾸지 않으며, 모델 컨텍스트에 텍스트를 추가하지도 않습니다. 알아 둘 점은 메모가 플러그인 저장소에 평문 JSON으로 저장된다는 것이므로 비밀 정보는 고정하지 마세요. 저장소 루트에 Apache-2.0 LICENSE가 있어 재배포가 허용됩니다. claude plugin validate는 오류나 경고를 보고하지 않았고, 작성자의 테스트 29개는 Claude Code 2.1.303에서 모두 통과했습니다.

UI 변경
Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
명령어/도구 추가
사용자나 Claude가 호출할 수 있는 새 슬래시 명령어나 도구를 등록합니다($.command.register / $.tool.register).
데이터 저장
플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).

호환성 및 문제 해결

macOS의 Claude Code 2.1.303에서 확인했습니다(validate, 테스트, 데모 녹화). 작성자의 README에는 2.1.292로 적혀 있습니다. 문제가 있다면:

  • 아무것도 나타나지 않음: 밴드는 메모가 하나 이상 있을 때만 표시됩니다. /pin help를 실행한 뒤 무언가를 고정해 보세요.
  • 메모가 사라짐: 새 세션이나 /clear에는 별도의 목록이 있습니다. 같은 폴더에서 이전 세션을 재개하면 예전 목록이 돌아옵니다. 다른 심볼릭 링크로 들어간 폴더는 다른 폴더로 취급됩니다.
  • 밴드는 VS Code 채팅이나 헤드리스 실행에서는 표시되지 않지만 /pin list는 그곳에서도 동작합니다.
  • "세션이 바뀌었습니다" 또는 "메모를 불러오지 못했습니다" 메시지는 폴더나 세션 ID를 읽을 수 없거나 저장된 문서가 손상되었다는 뜻입니다. 명령을 다시 실행하거나 /pin clear로 손상된 목록을 초기화하세요.
  • 두 프로세스가 같은 세션을 편집해도 실시간 동기화가 없으며 마지막 쓰기가 적용됩니다.

자주 묻는 질문

고정한 메모가 모델로 전송되나요?
아니요. 작성자의 README는 메모가 모델 컨텍스트에 자동으로 들어가지 않는다고 밝히며, 코드에서도 프롬프트에 메모를 추가하는 부분을 찾지 못했습니다. 메모는 밴드와 /pin list 출력에만 표시됩니다.
메모는 어디에 저장되나요?
$.store를 통해 플러그인 전용 저장소에, 작업 폴더와 세션 ID로 만든 키로 저장됩니다. 모드 자체는 파일을 쓰지 않으며 네트워크나 셸 코드도 없습니다.
Claude Code를 다시 시작해도 메모가 남아 있나요?
같은 폴더에서 같은 세션을 재개할 때만 남아 있습니다. 새 세션이나 /clear는 빈 목록으로 시작하고, 이전 세션을 재개하면 그 세션의 메모가 돌아옵니다.
최대 몇 개까지 고정할 수 있나요?
최대 100개이며 각 메모는 2,000자까지입니다. 삭제해도 ID는 재사용되지 않고 자동 만료도 없습니다.
밴드가 왜 한국어인가요?
작성자가 인터페이스 문구를 한국어로 썼기 때문입니다. 예를 들어 제목 "핀 3 (완료 1)"은 "3개 고정(1개 완료)"을 뜻하고, 각 명령 뒤의 확인 메시지도 한국어입니다. 명령, 메모 내용, 체크박스는 어떤 언어로든 쓸 수 있으며 고정된 것은 이 문구들뿐입니다.
Claude Code에서 실행 중인 After추천

After

Claude Code용 프롬프트 대기열: /after는 현재 턴이 끝난 뒤에 다음 작업을 실행하며, 진행 중인 작업에 끼어들지 않습니다.

  • 프롬프트 위
  • 패널
  • 토스트
  • 상태 표시줄
  • 모델 호출 (사용량 소모)
  • 프롬프트 읽기
  • UI 변경
  • 명령어/도구 추가
  • 데이터 저장

v2.1.303에서 테스트됨

더 보기: 타이머, 할 일, 스탠드업, 슬래시 명령.