이 글은 Claude Opus 5 를 이용해 초안이 작성되었으며, 이후 퇴고를 거쳤습니다.


Part 1에서 두 스킬셋의 총 분량이 2,949줄과 2,945줄로 거의 같다는 것을 확인했습니다. 차이는 크기가 아니라 배치였습니다.

이번 편은 그보다 더 근본적인 차이를 다룹니다. 스킬이 언제, 누구의 결정으로 발동하는가.

결론부터 말하면 superpowers 의 “자동 활성” 은 마케팅 문구가 아니라 셸 스크립트 한 개 였고, mattpocock 쪽이 그렇게 하지 않는 것도 취향이 아니라 파일에 박힌 플래그 였습니다.


1. 두 개의 진입점#

두 묶음 모두 “어떤 스킬을 써야 하는가” 를 다루는 메타 스킬을 가지고 있습니다. 그런데 성격이 정반대입니다.

using-superpowersask-matt
분량87줄90줄
대상에이전트사용자
성격지시안내
발동훅으로 매 세션 주입사용자가 /ask-matt 를 침
수동 전용 플래그없음있음

분량이 87줄과 90줄로 거의 같습니다. 같은 크기의 문서가 정반대 방향을 향하고 있습니다.

using-superpowers — 에이전트에게 내리는 명령#

If you think there is even a 1% chance a skill might apply to what you are
doing, you ABSOLUTELY MUST invoke the skill.

IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.

This is not negotiable. This is not optional. You cannot rationalize your
way out of this.

같은 문서에 “이런 생각이 들면 그건 합리화다” 라는 표가 있습니다. “이건 간단한 질문일 뿐이야”, “먼저 코드베이스를 좀 보고”, “이 스킬은 과하다” 같은 회피 문구를 미리 나열해 두고 각각을 반박합니다.

에이전트가 스킬을 안 쓰려고 드는 경향을 실패 모드로 규정하고 문서로 틀어막은 것입니다. 설계자가 LLM 의 행동을 관찰한 뒤 대응한 흔적입니다.

ask-matt — 사용자에게 주는 지도#

같은 자리에서 mattpocock 은 이렇게 시작합니다.

Ask Matt#

You don’t remember every skill, so ask.

“당신은 스킬을 다 기억하지 못하니까 물어보라.” 대상이 에이전트가 아니라 사람입니다.

그리고 전체 흐름을 문서로 적어 둡니다. /grill-with-docs → (필요하면 /prototype 우회) → /to-spec → /to-tickets → /implement → /tdd → /code-review. 여기에 /triage, /diagnosing-bugs, /wayfinder 세 개의 진입 램프가 붙습니다.

같은 워크플로 지식인데, 한쪽은 에이전트의 컨텍스트에 밀어 넣고 다른 쪽은 사람이 열어 보는 문서에 둡니다.


2. 자동 활성의 정체 — SessionStart 훅#

claude plugin details 로 두 플러그인의 컴포넌트를 뽑아 봤더니 이 줄이 나왔습니다.

superpowers       : Hooks (1)  SessionStart
mattpocock-skills : Hooks (0)

superpowers 의 훅 정의는 이렇습니다.

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume|clear|compact",
        "hooks": [{ "type": "command", "command": "... session-start.sh" }]
      }
    ]
  }
}

그 스크립트가 하는 일의 핵심은 두 줄입니다.

using_superpowers_content=$(cat "${PLUGIN_ROOT}/skills/using-superpowers/SKILL.md")
{
  "hookSpecificOutput": {
    "hookEventName": "SessionStart",
    "additionalContext": "<EXTREMELY_IMPORTANT>\nYou have superpowers.\n\n..."
  }
}

세션이 시작될 때마다 using-superpowers 스킬 전문을 읽어 <EXTREMELY_IMPORTANT> 로 감싸 컨텍스트에 주입합니다.

matcher 를 보면 startup|resume|clear|compact 입니다. 시작할 때만이 아니라 재개할 때, 컨텍스트를 비울 때, 압축할 때도 다시 주입 됩니다. 4부작 Part 4에서 지적했던 “긴 세션에서 에이전트가 스킬 규칙을 잊어간다” 는 현상에 대한 대응입니다.

flowchart TD
    A["세션 시작 · 재개 · clear · compact"] --> B["SessionStart 훅 발동"]
    B --> C["session-start.sh 실행"]
    C --> D["using-superpowers/SKILL.md<br/>87줄 전문을 읽음"]
    D --> E["EXTREMELY_IMPORTANT 로 감싸<br/>additionalContext 에 넣음"]
    E --> F["에이전트 컨텍스트에 주입<br/>'You have superpowers'"]
    F --> G["에이전트가 매 작업마다<br/>스킬을 찾도록 강제됨"]

    style B fill:#FFD700,color:#000000
    style E fill:#FF9999,color:#000000
    style G fill:#87CEEB,color:#000000

“제안이 아니라 의무(Mandatory workflows, not suggestions)” 라는 README 의 문장이 이 40여 줄짜리 스크립트로 구현되어 있습니다.

그리고 이 글을 쓴 세션의 시스템 프롬프트에도 그 텍스트가 들어와 있었습니다. 문서에서 읽은 것이 아니라 작업 환경에서 직접 확인한 것 입니다.


3. 반대편 — 플래그 하나#

mattpocock 쪽은 훅이 0개입니다. 대신 각 스킬 파일에 플래그가 있습니다.

---
name: grill-me
description: A relentless interview to sharpen a plan or design.
disable-model-invocation: true
---

disable-model-invocation: true 는 에이전트가 스스로 이 스킬을 꺼내 쓰는 것을 금지합니다. 사용자가 직접 /grill-me 를 쳐야 작동합니다.

등록된 25개 스킬 전체를 세어 봤습니다.

수동 전용자동 발동 가능
mattpocock/skills14 / 25 (56%)11 / 25
superpowers0 / 1717 / 17

수동 전용으로 잠긴 14개는 이렇습니다.

ask-matt, grill-me, grill-with-docs, handoff, implement,
improve-codebase-architecture, setup-matt-pocock-skills, teach,
to-questionnaire, to-spec, to-tickets, triage, wait-what, wayfinder

흐름의 뼈대가 전부 여기 있습니다. grill-me 로 시작해 to-spec·to-tickets 를 거쳐 implement 로 가는 본류가 통째로 수동 전용입니다. 즉 mattpocock 의 워크플로는 에이전트가 자기 판단으로 시작할 수 없습니다.

반대로 자동 발동이 열려 있는 11개를 보면 성격이 다릅니다.

code-review, codebase-design, diagnosing-bugs, domain-modeling, grilling,
prototype, research, resolving-merge-conflicts, tdd, wizard, writing-for-agents

참조 성격이거나, 이미 시작된 작업 안에서 불리는 것들입니다. tdd 는 implement 가 부르고, grilling 은 grill-me 가 부릅니다. 사용자가 문을 연 다음에야 에이전트가 안에서 꺼내 쓸 수 있는 구조입니다.

superpowers 에는 이 플래그를 쓴 스킬이 하나도 없습니다. 17개 전부 에이전트가 판단해 발동할 수 있습니다.


4. 상시 토큰 비용#

발동 방식이 다르면 비용도 다릅니다. claude plugin details 는 플러그인이 모든 세션에 얹는 토큰 을 계산해 줍니다.

superpowers 4.0.3mattpocock-skills 1.2.3
스킬17개25개
상시 토큰약 1,166 tok약 1,609 tok
스킬당 평균 상시약 69약 64

둘 다 깔면 매 세션 약 2,775 토큰 을 시작부터 씁니다. 상시 비용은 스킬 개수에 거의 비례 합니다. 스킬 하나당 이름과 설명 정도가 항상 올라가 있기 때문입니다.

호출 시 비용은 스킬 본문 크기를 따라갑니다.

스킬상시호출 시
grill-me약 3020 미만
grilling약 60약 610
brainstorming (superpowers)약 70약 870
using-superpowers약 60약 1,400
test-driven-development (superpowers)약 30약 3,800
tdd (mattpocock)약 60약 1,100
writing-skills (superpowers)약 40약 8,600

grill-me 의 호출 비용이 20 토큰 미만입니다. 7줄짜리 진입점이라 그렇습니다. 실제 비용은 그것이 부르는 grilling 이 냅니다.

그리고 마지막 세 줄이 Part 1 의 “배치” 이야기를 비용으로 다시 보여 줍니다. superpowers 의 TDD 스킬은 한 번 부르면 3,800 토큰, mattpocock 은 1,100 토큰입니다. mattpocock 쪽은 예제와 모킹 지침을 tests.md·mocking.md 로 빼 두어 필요할 때만 추가로 읽습니다.

writing-skills 8,600 토큰은 superpowers 쪽 설계의 극단입니다. 655줄짜리 단일 파일이라 한 번 부르면 통째로 들어옵니다.


5. 설치해 보고 알게 된 것#

문서에 없는 실무 사항 세 가지를 겪었습니다.

설치 직후에는 못 씁니다#

claude plugin install mattpocock-skills
# ✔ Successfully installed plugin: mattpocock-skills@claude-plugins-official

설치한 세션에서 바로 불러 봤습니다.

Skill(grill-me)                   → Unknown skill: grill-me
Skill(mattpocock-skills:grill-me) → Unknown skill: mattpocock-skills:grill-me

파일은 디스크에 있는데 안 잡힙니다. 스킬 목록이 세션 시작 시점에 확정되기 때문입니다. CLI 도움말도 update ... (restart required to apply) 라고 적고 있고, 설치도 같습니다.

설치 후 세션을 새로 시작해야 합니다. 어느 소개 글에도 없지만 처음 깔면 반드시 겪습니다.

설치본은 원본과 같았습니다#

공급망 관점에서 확인했습니다. 마켓플레이스에서 받은 파일이 GitHub 원본과 같은지 대조했습니다.

grill-me: 동일
grilling: 동일

바이트 단위로 일치했습니다. 중간에 끼어든 변형이 없다는 뜻입니다.

비용을 미리 볼 수 있습니다#

가장 쓸모 있는 발견입니다.

claude plugin details <플러그인 이름>

이 한 줄이 그 플러그인이 앞으로 매 세션 얼마를 가져갈지, 스킬 하나를 부르면 얼마가 추가되는지 를 보여 줍니다. 훅과 에이전트 개수도 함께 나옵니다.

깔기 전에 이걸 한 번 보는 것이 소개 글 열 편 읽는 것보다 낫습니다.


6. 이번 편의 정리#

항목superpowersmattpocock/skills
진입점의 대상에이전트 (지시)사용자 (안내)
발동 메커니즘SessionStart 훅으로 주입사용자가 슬래시 명령
재주입 시점startup · resume · clear · compact없음
수동 전용 스킬0 / 1714 / 25
상시 토큰약 1,166약 1,609
워크플로 뼈대자동 발동전부 수동 전용

두 묶음의 차이는 스킬 내용이 아니라 여기 있습니다. 내용은 Part 1 에서 봤듯 총량도 비슷하고 단계도 거의 겹칩니다. 갈라지는 것은 누가 시작 버튼을 누르는가 입니다.

다음 편은 계획 단계를 정면으로 붙입니다. brainstorming 과 grilling 계열이 같은 일을 어떻게 다르게 하는지, 그리고 superpowers 에 없는 prototype 이 왜 중요한 빈칸인지를 봅니다.


References#

1차 자료

측정값

  • 토큰 비용·스킬 개수·훅 개수는 claude plugin details 출력입니다. 도구가 “추정치이며 실제와 다를 수 있다” 고 명시하고 있으며, 버전이 오르면 달라집니다.
  • 수동 전용 스킬 개수는 플러그인에 등록된 25개 / 17개의 frontmatter 에서 disable-model-invocation: true 를 전수 검사한 결과입니다.
  • 설치본과 GitHub 원본의 일치는 diff -q 로 확인했습니다.
  • Unknown skill 오류는 설치한 세션에서 실제로 재현한 것입니다.

시리즈