Skill·MCP·플러그인·CLI 중에서 가장 가벼운 Claude Code 확장을 고르는 방법

발행: (2026년 6월 8일 PM 01:45 GMT+9)
12 분 소요
원문: Dev.to

출처: Dev.to

플러그인 릴리스를 Claude Code로 만들고 있었는데, 변경 로그 초안이 깔끔하게 나왔습니다. 마지막 태그부터 현재까지 git log를 끌어와서 == Changelog == 아래에 넣는 것이죠. 이것은 절차이기 때문에 그냥 동작했습니다.
다음 단계에서 걸렸습니다. 현재 WordPress.org 활성 설치 수를 릴리스 포스트에 추가하고 싶었고, 같은 절차 파일에 한 줄을 추가했습니다: “통계를 가져와서 기록한다.” 그런데 동작하지 않았습니다. 당연히 그렇죠. 절차를 담은 파일은 Claude에게 단계들을 가르쳐 주지만, 웹사이트에서 오늘의 숫자를 가져올 다리는 없습니다. 외부에서 데이터를 가져오려면 외부와 대화할 입이 필요합니다. 그건 다른 도구의 역할이었습니다.

Claude Code에는 기능을 추가할 수 있는 여러 방법이 있습니다: Skill, MCP, Plugin. 이름이 비슷하고 설명이 뒤섞여 있어 혼란스럽고, CLI도 섞여 있습니다. 저는 워드프레스 플러그인을 만들고 코딩 에이전트를 매일 사용하지만, 어느 것을 잡아야 할지 매번 망설였습니다. 이 글은 제가 한 줄 규칙으로 정리한 기준을 보여줍니다: 가장 가벼운 것부터 사용한다.

아래 네 가지는 모두 빠르게 동작합니다. 내가 확인한 시점에 리스트가 정확했으며, 여러분도 /context, /mcp, /plugins 로 직접 확인해 보세요.

  • Claude Code: claude --version 에서 나오는 값 (실제 버전 번호로 교체)
  • 슬래시 명령은 이제 Skills에 포함됩니다. “명령”을 별도 개념으로 기대한다면 맞지 않을 겁니다.
  • 내 목표는 직접 만든 워드프레스 플러그인과 테마입니다.

비교 표에 나타난 세 가지는 사람들을 혼란스럽게 하는데, 서로 다른 역할을 하는 것을 같은 축에 놓고 비교하기 때문입니다. 실제로는 중첩 관계에 있습니다.

  • Plugin 은 배포 컨테이너입니다. 그 안에 Skills, MCP 설정, 슬래시 명령, 서브에이전트, 훅이 들어갑니다.
  • Skill 은 절차나 지식의 묶음이며, 그 안에서 MCP 도구나 CLI를 호출할 수 있습니다. 슬래시 명령도 이제 Skills 안에 존재합니다.
  • 비유하자면 레시피 카드(Skill), 주방을 외부 시장과 연결하는 배관(MCP), 그리고 모든 것을 포장한 완전한 주방(Plugin)이라고 할 수 있습니다. 레시피 카드가 배관보다 낫다는 논쟁은 없습니다. 각각 다른 일을 하니까요. 여기서도 “어떤 레이어에 문제가 있는가”를 묻는 것이지, “어떤 것이 더 좋은가”를 비교하는 것이 아닙니다.

이 중첩 구조를 머릿속에 두고, 내가 처음에 실수한 이유를 한 줄로 설명하면: MCP가 해야 할 일을 Skill(절차 가르치기)로 하려 했다는 겁니다. 레이어를 혼동한 것이죠.

아래가 전체 결정 흐름입니다. 위에서 아래로 적용하세요.

  1. 절차나 지식만 가르치나요?Skill
  2. 실시간 외부 데이터가 필요하나요?
    • CLI가 있나요? → 있으면, 가끔만 쓸 경우 Skill 안에서 CLI를 호출합니다.
    • CLI가 없거나 매일 깊게 사용하나요?MCP
  3. 위 모든 것을 묶어 재사용하거나 공유하고 싶나요?Plugin

“가벼운 것부터”라는 원칙은 컨텍스트와 노력 비용이 아래로 갈수록 커지기 때문입니다. 대부분은 1번 항목에 해당합니다. 하지만 반짝이는 새 도구가 눈에 띄면 MCP나 Plugin을 먼저 생각하게 됩니다. 저도 그랬죠. 먼저 Skill만으로 충분한지, 그 다음에 CLI가 가능한지, 마지막으로 무거운 도구를 잡아야 합니다.

몇 가지 최근 사례를 이 흐름에 대입해 보면:

  • 커밋 메시지 스타일을 표준화한다 → 절차이므로 Skill.
  • 스테이징 포스트 수를 확인한다 → 외부 데이터지만 wp-cli가 있고 가끔만 쓰니 Skill 안에서 CLI 호출.
  • 프로덕션 대시보드를 매일 깊게 다룬다 → CLI만으로는 부족하고 빈도가 높아 MCP.
  • 여러 플러그인에 공유할 린트 설정과 릴리스 절차를 배포한다 → 배포이므로 Plugin.

아래부터는 각 레이어를 순서대로 설명합니다.

SKILL.md 파일 예시

---
name: release-build
description: "플러그인 릴리스를 준비합니다. 버전 올리기, changelog 작성, 배포 zip 빌드."
disable-model-invocation: true
allowed-tools:
  - Read
  - Edit
  - Bash(git log *)
  - Bash(unzip -l *)
---

사람들이 오해하는 부분은 allowed-tools 입니다. 이는 어떤 도구를 사용할 수 없게 하는 것이 아니라, 리스트에 있는 도구들을 확인 프롬프트 없이 바로 실행하도록 사전 승인하는 역할입니다. 리스트에 없는 도구도 정상적인 권한 설정 하에 호출할 수 있습니다. 따라서 차단하고 싶은 도구를 리스트에서 빼는 것만으로는 차단되지 않습니다.

또 다른 항목인 disable-model-invocation: true 은 릴리스와 같이 부수 효과가 있는 작업에 사용합니다. 저는 /release-build 를 직접 호출하고 싶고, Claude가 자동으로 시작하는 것을 원치 않기 때문입니다.

핵심 포인트: Skill은 로컬 파일과 Claude Code가 실행할 수 있는 명령에만 접근합니다. 웹사이트의 현재 숫자처럼 실시간 데이터를 가져오는 일은 어떤 식으로 절차를 적어도 절대 일어나지 않습니다. 여기서 제가 걸렸던 점이죠. Skill은 절차를 기억하지만, 밖으로 나갈 다리가 없습니다.

MCP (Model Context Protocol)

MCP는 Claude를 외부 도구와 데이터에 연결합니다. 설정 파일에 서버를 선언하면 됩니다. 예시: .mcp.json

{
  "mcpServers": {
    "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] }
  }
}

WordPress.org 통계, 스테이징 DB, GitHub 이슈 등 외부에서 순간값을 가져와야 할 때 MCP를 사용합니다. 활성 설치 수는 매일 변하므로, 어제 Skill에 적힌 숫자는 내일이면 틀립니다. 고정된 내용은 Skill에, 매번 바뀌는 내용은 MCP에 두세요. /mcp 명령으로 연결된 서버를 확인하고 해제할 수 있습니다.

하지만 MCP는 무겁습니다. “유용해 보이는 건 다 연결한다”는 기본 설정은 좋지 않습니다. 아래에서 숫자를 보여줄 테니, 무게가 꽤 나가는 걸 확인하세요.

외부 데이터를 원할 때, 바로 MCP로 가지는 이유

먼저 CLI가 있는지 확인합니다. GitHub에는 gh, WordPress에는 wp-cli 가 있습니다. CLI가 있으면 Skill 안에서 Bash로 호출하는 것이 보통 가볍습니다.

wp post list --post_type=post --post_status=publish --format=count
wp option get tmfs_settings --format=json

왜냐하면 컨텍스트 로드 방식이 다르기 때문입니다. MCP 서버는 연결되는 순간 전체 도구 스키마를 로드하고 매 턴마다 이를 유지합니다. 반면 Bash를 통한 CLI 호출은 시작 시 아무것도 로드하지 않으며, 명령이 실행될 때만 비용이 발생합니다. 가끔 쓰는 경우 이 차이는 크게 느껴집니다. 한 벤치마크에 따르면 GitHub CLI는 GitHub MCP보다 작업당 4~32배 가볍다고 합니다. 매일 깊게 통합한다면 MCP가 정형화된 결과를 제공해 정당화될 수 있지만, 한 달에 두 번 정도 쓰는 도구에 전체 스키마를 유지하는 것은 비효율적입니다.

Plugin 구조 예시

my-plugin/
├── .claude-plugin/plugin.json
├── skills/
└── .mcp.json

Marketplace에서 /install 로 설치하고 /plugins 로 관리합니다. 여러 플러그인에 공통된 릴리스 절차가 있다면 release-build Skill과 빌드 스크립트를 하나의 Plugin으로 묶어 새 레포에 한 번에 끌어올 수 있습니다. Plugin 자체가 내용을 해결해 주는 것이 아니라, 내용은 Skill과 MCP 에서 나오고, Plugin은 배포 역할만 합니다. 먼저 내용을 정하고, 배포가 필요할 때 Plugin으로 감싸세요. “Plugin을 만들자

0 조회
Back to Blog

관련 글

더 보기 »