강좌
13개 강의 중 8번째 · Claude Platform 101Skills
이 페이지는 아직 번역되지 않았습니다 — 영어 버전을 표시합니다.
Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Not nowSign in

Skills

Skills are folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks. At the core of every Skill is a SKILL.md file — a packaged set of instructions you upload once and then attach to any messages.create call. You're teaching Claude how you do something: your status report format, your review checklist, your release notes. Claude reads the Skill, follows the procedure, and produces output in your shape.

한국어 대본
  • 00:00Skills는 Claude가 동적으로 불러오는 지침, 스크립트, 리소스가 담긴 폴더입니다.
  • 00:07특화된 작업에서 성능을 개선하기 위해서입니다.
  • 00:10그리고 이러한 skills를 에이전트 루프에 통합하는 것은 쉽습니다.
  • 00:15skill은 패키지로 묶인 지침 세트, skill.md 파일, 선택적으로 보조 파일로 구성되며,
  • 00:20한 번 업로드한 다음 어떤 messages.create 호출에도 첨부할 수 있습니다.
  • 00:24Claude에게 무언가를 하는 방법, 상태 보고서 형식, 검토 체크리스트,
  • 00:29릴리스 노트를 가르칩니다. Claude는 skill을 읽고 절차를 따르며 지정한 형식에 맞는 결과물을 생성합니다.
  • 00:35하지만 skill과 tool의 차이를 아는 것이 중요합니다. Tool은 Claude를 데이터와 작업에 연결합니다. 예를 들어,
  • 00:40이 코드 섹션을 찾아보고, 이 이메일을 보내세요. Claude가 그것을 호출하면 다른 무언가가 실행됩니다. Skills는
  • 00:45Claude에게 절차를 가르칩니다. 이 템플릿에 따라 일일 상태 보고서를 생성하세요. 그것은 플레이북입니다.
  • 00:50Claude는 그것을 읽고 따르며, 때로는 번들 스크립트를 직접 실행하기도 합니다. Tool은
  • 00:54Claude가 할 수 있는 일에 관한 것인 반면, skills는 원하는 방식에 관한 것입니다. 그리고 고려해야 할 점은
  • 00:59skills도 시작 시 모든 것을 컨텍스트에 로드하지 않는다는 것입니다. 이름과 설명만 로드합니다.
  • 01:04그래서 에이전트가 skill을 사용할 시기를 결정하면, 그때 skill을 컨텍스트에 로드합니다.
  • 01:11Skills는 작업 공간에 한 번 업로드된 다음 ID로 참조됩니다. 이것을
  • 01:15Claude 플랫폼에 직접 업로드하거나, 제가 여기서 한 것처럼 프로그래밍 방식으로 할 수 있습니다. 이제 저는
  • 01:24상태 보고서 생성기를 원합니다. 좋은 상태 보고서를 만드는 규칙, 섹션, 톤, 요약 방법,
  • 01:29요약, 차단 항목, 제가 미리 패키징한 skill에 있습니다. 활동 로그 자체는
  • 01:34제가 전달하는 문자열입니다. 몇 가지 짚고 넘어갈 점은 client.beta.messages.create를 호출하고 있다는 것입니다.
  • 01:41표준 호출이 아니라 skills를 betas 헤더에 전달한다는 점입니다. 이 영상 기준으로 skills는
  • 01:47아직 베타 기능입니다. Container.skills는 skill이 연결되는 곳으로, 여러 개의 skill을 겹쳐서 적용할 수 있는 목록입니다.
  • 01:52skills를 하나의 호출에 적용할 수 있습니다. 그리고 저는 여기서 코드 실행도 켰습니다. Skills는 종종
  • 01:57코드 실행과 잘 어울립니다. skill 절차가 터미널에서처럼 실제 작업을 수행할 수 있기 때문입니다. 그럼 실행해 봅시다.
  • 02:04결과물은 skill이 지정한 형식 그대로 포맷된 상태 보고서입니다. 섹션,
  • 02:10톤, 차단 항목 처리, 모두 사용자가 업로드한 skill.md 파일에서 비롯됩니다. 사용자 프롬프트
  • 02:15한 줄입니다. 절차는 skill에 있습니다. 그래서 프로덕션 앱에서 팀이
  • 02:20전체 기능에 걸쳐 출력을 표준화하는 방법입니다. 따라서 이 일일 상태 보고서 엔드포인트를 사용하면 모든
  • 02:25PM이 동일한 구조, 동일한 톤, 동일한 순서의 동일한 섹션을 얻으며, 아무도
  • 02:29템플릿을 프롬프트에 복사하여 붙여넣지 않아도 됩니다. Skills는 절차를 패키지로 묶습니다. 다음을 사용하여 한 번 업로드하세요:
  • 02:39client.beta.skills.create 엔드포인트, container.skills를 사용하여 모든 messages.create 호출에 첨부하고,
  • 02:45그런 다음 '어떻게'가 '무엇'만큼 중요할 때 사용하세요.
  • 02:50사용자
Watch on YouTube

Skills vs. tools

It's worth being clear on the difference, because the two solve different problems:

  • Tools connect Claude to data and actions. "Look up this code section," "send this email" — Claude calls the tool, and something else runs.
  • Skills teach Claude a procedure. "Generate the daily status report following this template" — it's a playbook Claude reads and follows, which sometimes means running bundled scripts itself.

A simple way to remember it: tools are about what Claude can do, while Skills are about how you want it done.

Side-by-side comparison of tools and Skills: tools connect to data, take actions, and run code — what Claude can do; Skills teach a procedure with just instructions, no code runs — how you want it done

One more thing worth knowing: Skills don't load fully into context on startup. Only the name and description load at first. When your agent decides a Skill is relevant, it then loads the full Skill into context. That keeps your context lean even when many Skills are available.

Uploading a Skill

Skills are uploaded once to your workspace, then referenced by ID. You can upload directly on the Claude Platform, or do it programmatically:

python
skill = client.beta.skills.create(
    display_title="Status Report Generator",
    files=files_from_dir("status-report-skill"),  # folder containing SKILL.md
)

print(skill.id)  # reference this ID in future requests

For this example, I want a status report generator. All the rules for what makes a good status report — sections, tone, how to summarize, how to handle blockers — live in a Skill packaged ahead of time. The activity log itself is just a string passed in at request time.

Attaching a Skill to a request

Skills attach to a request through the container configuration — a skills array inside the container, where each entry names a skill_id and version. Here's the full call for the status report generator:

python
response = client.beta.messages.create(
    model="claude-opus-5",
    max_tokens=4096,
    betas=["skills-2025-10-02", "code-execution-2025-08-25"],
    container={
        "skills": [
            {
                "type": "custom",
                "skill_id": skill.id,
                "version": "latest",
            }
        ]
    },
    tools=[
        {
            "type": "code_execution_20250825",
            "name": "code_execution",
        }
    ],
    messages=[
        {
            "role": "user",
            "content": f"Generate the daily status report from this activity log:\n\n{activity_log}",
        }
    ],
)

A few things worth pointing out:

  • We're calling client.beta.messages.create, not the standard one, and passing the skills feature via the beta header. As of this video, Skills are still a beta feature.
  • container.skills is where the Skill attaches. It's a list, so you can layer multiple Skills onto one call.
  • Code execution is turned on here too. It's required: on the API, Skills run inside the code execution tool's container, which is what lets Skill procedures do real work — like running scripts in a terminal.

Running it

The output is a status report formatted exactly the way the Skill says to format it. Sections, tone, blocker handling — all of it comes from the SKILL.md file you uploaded. The user prompt is one line; the procedure lives in the Skill.

Terminal output of the generated daily status report, with Done and Blockers sections and a summary formatted by the Skill

In a production app, this is how a team standardizes output across an entire feature. With this daily status report endpoint, every PM gets the same structure, the same tone, the same sections, in the same order — without anyone copy-pasting a template into a prompt.

A project management app with a Daily reports page, where each project's activity log has a one-click Generate report button backed by the Skill

Recap

  • Skills package your procedures. A SKILL.md file (plus any scripts and resources) teaches Claude how you want something done.
  • Tools vs. Skills: tools are about what Claude can do; Skills are about how you want it done.
  • Skills load progressively. Only the name and description load at startup; the full Skill loads into context when the agent decides to use it.
  • Upload once with client.beta.skills.create, then attach with container.skills on any messages.create call — a list, so you can layer multiple Skills.
  • Pair with code execution when the Skill's procedure needs to do real work.
  • Reach for a Skill when the how matters as much as the what.