로컬 우선(Local-first) Claude Code 플러그인: 키 불필요, 네트워크 불필요, 오픈 소스
요약
Claude Code 내에서 외부 데이터 전송 없이 로컬에서 실행되는 오픈 소스 플러그인 마켓플레이스를 소개합니다. API 키나 네트워크 호출 없이 사용자의 머신에서 직접 작동하여 보안과 검사 가능성을 극대화한 도구 모음입니다.
핵심 포인트
- 로컬 우선(Local-first) 원칙으로 보안 및 데이터 프라이버시 강화
- API 키, 계정, 네트워크 호출이 필요 없는 독립적 실행 환경
- 결정론적 생성을 통해 재현 가능하고 편집 가능한 결과물 제공
- 브랜드 에셋, 이력서 생성, 문서 참조 등 다양한 워크플로우 지원
저는 계속해서 Claude Code 안에서 생활하고 있으며, 외부로 데이터를 전송하지 않는 작고 유용한 도구들을 그 안에 두고 싶었습니다. 로그인과 API 키가 필요한 또 다른 SaaS가 아니라, 단순히 내 머신에서 실행되고, 하나의 작업을 잘 수행하며, 내가 신뢰하기 전에 코드를 읽어볼 수 있는 그런 도구 말입니다.
그래서 제가 실제로 사용하는 워크플로우들을 몇 가지 오픈 소스 (open-source) 플러그인으로 패키징하여 하나의 마켓플레이스에 모았습니다. 이것이 첫 번째 기록입니다.
여기서 "로컬 우선(local-first)"이 의미하는 것
제가 스스로 세운 규칙은 다음과 같습니다: 플러그인은 기본적으로 사용자의 머신에서 완전히 실행되어야 합니다. 계정 없음, API 키 없음, 네트워크 호출 없음, 업로드되거나 자동으로 게시되는 것 없음. 만약 플러그인이 진정으로 네트워크가 필요하다면, 다음과 같아야 합니다:
- 명확해야 함,
- 단일 모듈로 격리되어야 함,
- 기본적으로 꺼져 있어야 함,
- 그리고 사용자의 자체 키를 사용해야 함.
그렇게 하면 코드를 grep하여 무엇이 외부 세계와 접촉하는지 정확히 확인할 수 있습니다. 로고나 이력서를 생성하는 도구의 경우, 이러한 검사 가능성 (inspectability)이 중요합니다.
미리 밝히는 두 가지 정직한 예외 사항이 있습니다: docpin은 웹에서 라이브러리 문서(항상 인용됨)를 가져오며, brand-forge는 AI 사진 촬영을 위해 이미지 API를 호출할 수 있는 하나의 선택적(opt-in) 모듈을 가지고 있습니다. 그 외의 모든 것은 로컬(local)입니다.
스위트(suite) 구성 요소
- brand-forge — 브랜드 프로필(색상, 글꼴, 목소리)을 한 번 저장하면, 브랜드에 맞는 로고, 소셜 템플릿, 문서/덱 템플릿을 SVG로 생성합니다. 벡터 출력은 로컬 코드로 그려지므로 결정론적(deterministic)입니다: 동일한 프로필은 항상 동일한 에셋을 생성합니다.
- cv-forge — JSON Resume 스키마에 이력서를 하나 보관하고, 로컬 HTML 템플릿과 브라우저의 인쇄 기능을 사용하여 깔끔하고 ATS 친화적인 PDF를 생성합니다. Node 없음, 키 없음, 네트워크 없음.
- content-multiplier — 단 한 번의 명령으로 하나의 아이디어를 브랜드에 맞는 다채널, 다국어 콘텐츠로 변환합니다.
- docpin — 버전이 일치하고 인용된 문서를 가져옴으로써, 사용자가 설치한 버전의 라이브러리를 기준으로 코드를 근거화(ground)합니다.
- 그리고 같은 정신을 가진 몇 가지 도구가 더 있습니다.
설치하기
모든 것은 Claude Code의 플러그인 시스템을 통해 설치됩니다. 세션에서:
/plugin marketplace add localplugins/plugins
/plugin install brand-forge@localplugins
그 후 /brand-make instagram post "We just shipped"와 같은 자연어 요청을 사용하면, 저장된 브랜드 정보를 활용하여 output/ 디렉토리에 편집 가능한 SVG 파일을 반환합니다.
주목할 만한 몇 가지 설계 선택 사항
LLM 왕복(round-trip) 대신 결정론적 생성 (Deterministic generation). brand-forge의 로고와 템플릿은 모델에게 그려달라고 요청하는 대신, 사용자의 프로필을 바탕으로 일반 코드를 통해 생성됩니다. 이를 통해 결과물을 재현(reproducible)하고, 차이점 비교(diffable) 및 편집(editable)할 수 있으며, 실행할 때마다 결과가 달라지는 드리프트(drift) 현상이 발생하지 않습니다.
네트워크 경계는 단 하나의 파일입니다. brand-forge에서 인터넷에 접속할 수 있는 유일한 모듈은 선택 사항인 이미지 생성기(image generator)뿐입니다. 환경 변수(env var)를 설정하고 직접 키(key)를 제공하지 않는 한 이 기능은 꺼져 있으며, 에셋의 텍스트는 SVG 오버레이로 로컬에서 합성되므로 이미지 프롬프트(image prompt)에 절대 포함되지 않습니다. 코드베이스 전체가 아닌, 단 하나의 파일만 감사(audit)하면 됩니다.
플러그인의 구조 (Plugin anatomy). 각 플러그인은 일반적인 Claude Code 플러그인과 동일합니다. 슬래시 명령어(slash commands), 자연어 요청에서 트리거되는 기술(skills), 때로는 컨텍스트를 로드하는 SessionStart 훅(hook)으로 구성됩니다. brand-forge의 경우 두 개의 서브 에이전트(multi-asset 세트를 계획하는 art-director와 팔레트 및 대비를 브랜드 기준에 맞춰 확인하는 visual-guardian)가 포함되어 있습니다. 직접 플러그인을 제작한다면, 예제로 읽기에 충분할 만큼 규모가 작습니다.
이것이 아닌 것
이 도구는 인간 디자이너의 결과물을 능가하는 디자인 도구가 아니며, 그렇게 되려고 노력하지도 않습니다. 터미널을 벗어나거나 별도의 서비스에 가입하지 않고도, 일관성 있고 브랜드에 부합하며 충분히 괜찮은(good-enough) 에셋과 문서를 얻는 방법입니다. 픽셀 단위의 완벽한 아트 디렉션(art direction)이 필요하다면, 이 도구를 스캐폴딩(scaffolding) 용도로 사용하고 마무리는 수작업으로 진행하세요.
사용해 보기
모든 것은 MIT 라이선스이며 오픈 소스(open source)입니다. Claude Code 자체로 구축되었습니다:
https://github.com/localplugins/plugins
저는 진심으로 다음 두 가지 사항에 대한 피드백을 받고 싶습니다: 무엇이 유용하게 느껴지는지 대(vs) 무엇이 단순한 눈속임(gimmicky)처럼 느껴지는지, 그리고 로컬 우선 (Local-first) 플러그인이 허용될 수 있는 범위의 경계가 어디여야 한다고 생각하시는지입니다. 이슈(Issues)와 댓글(Comments) 모두 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기