Skip to main content
Tips Claude Code · Pelajaran 3 dari 6 · 10 menit

Cara Pakai Skill di Claude Code: Contoh dari Repo Nyata

Cara pakai skill di Claude Code dari repo nyata: frontmatter SKILL.md, peran description sebagai pemicu, apa yang dimuat kapan, dan skill vs CLAUDE.md.

Oleh Matthews WongDitinjau pada Dicek dengan Claude Code v2.1.296

Poin utama

Skill di Claude Code adalah folder berisi file SKILL.md: frontmatter YAML yang description-nya memberi tahu Claude kapan skill itu dipakai, lalu instruksinya. Sampai skill dipakai, hanya description yang ada di konteks, jadi description-lah yang menentukan skill terpicu atau tidak, dan prosedur panjang nyaris tidak memakan konteks sampai benar-benar dibutuhkan.

Setelah pelajaran ini, Anda bisa

  • Menulis SKILL.md dengan description yang memuat kata-kata yang benar-benar muncul di permintaan.
  • Memperkirakan beban konteks sebuah skill sebelum dan sesudah dipakai.
  • Memilih antara CLAUDE.md, skill, atau command yang hanya dijalankan manual untuk sebuah aturan.
Lihat cara kerjanya

Ikuti diagramnya langkah demi langkah

Tekan Putar, atau melangkah dengan panah. Setiap langkah juga ditulis di bawah diagram.

Cara skill dimuat: description dulu, isinya saat dibutuhkan

Setiap skill hanya memasukkan description-nya ke konteks Claude saat sesi dimulai; permintaan yang cocok, /nama yang diketik, atau laporan hook memuat isi lengkapnya, yang kemudian bertahan di percakapan.

Ditinjau pada 13 Oktober 2026 · Claude Code v2.1.296

Langkah 1 dari 6. Skill adalah file SKILL.md: frontmatter yang description-nya menjelaskan kapan skill dipakai, lalu instruksinya. Semua yang dibaca Claude berbagi satu context window.

Tombol: ← → langkah · Home / End · K putar atau jeda

  1. Skill adalah file SKILL.md: frontmatter yang description-nya menjelaskan kapan skill dipakai, lalu instruksinya. Semua yang dibaca Claude berbagi satu context window.

  2. Saat sesi dimulai, CLAUDE.md dimuat utuh, tetapi keempat skill hanya menyumbang description-nya ke sebuah daftar singkat. Isi skill tetap di disk.

    name: drawing-blog-diagrams description: Draw in-article explanatory diagrams for blog posts …
  3. Anda meminta diagram. Claude membandingkan permintaan itu dengan semua description di daftar; yang ini berbunyi “Use when adding a diagram”, jadi cocok.

    Use when adding a diagram, figure, illustration or in-article image to a blog postTebak langkah berikutnya Description-nya cocok. Apa yang sekarang masuk ke konteks? (Isi lengkap skill itu · Tidak ada lagi: description sudah cukup · Isi semua skill sekaligus)
  4. Baru sekarang Claude Code memuat isi lengkapnya ke percakapan. Isi itu bertahan selama sesi dan tidak dibaca ulang, jadi tulis instruksi yang berlaku sepanjang tugas.

  5. Anda juga bisa mengetik /drawing-blog-diagrams. Custom command sudah digabung ke skills: file di .claude/commands/ maupun folder skill sama-sama membuat slash command.

    .claude/commands/deploy.md → /deploy .claude/skills/deploy/SKILL.md → /deployTebak langkah berikutnya Hook gambar melaporkan subject-absent. Apa yang terjadi selanjutnya? (Tidak ada: hanya permintaan Anda yang memicu skill · Skill diagram ikut terpanggil)
  6. Hook gambar di repo ini melaporkan kode seperti subject-absent. Skill diagram mencantumkan kode yang sama persis di description-nya, jadi laporan hook langsung memanggil skill yang tepat.

    and when the figure-fitness hook reports subject-absent, subject-distant, own-work-preferred, caption-restates-alt, alt-prefix, overused-figure or portrait-figure.

Apa itu skill di Claude Code, dan apa isi SKILL.md?

Skill adalah folder yang berisi file SKILL.md. File itu punya dua bagian: frontmatter YAML di antara penanda ---, lalu instruksi dalam Markdown. Skill proyek disimpan di .claude/skills/ di dalam repositori dan ikut sampai ke semua orang yang meng-clone-nya; skill pribadi disimpan di folder home Anda dan ikut ke semua proyek. Nama folder, atau field name, menjadi command yang bisa Anda ketik, misalnya /drawing-blog-diagrams.

Baca selengkapnya (2)

Semua field frontmatter bersifat opsional, tetapi description yang direkomendasikan dokumentasi, karena Claude memakainya untuk memutuskan kapan skill diterapkan. Field lain mengatur siapa yang boleh memanggilnya (disable-model-invocation, user-invocable), tool apa yang langsung diizinkan pada giliran saat skill dipanggil (allowed-tools), dan file mana yang mengaktifkannya (paths). Claude Code mengabaikan field yang tidak dikenalnya tanpa pesan error, jadi salah ketik satu huruf membuat field itu diam-diam tidak berfungsi.

Custom command sudah digabung ke dalam skills. File .claude/commands/deploy.md dan skill .claude/skills/deploy/SKILL.md sama-sama membuat /deploy dan bekerja dengan cara yang sama, dan file command lama tetap berjalan. Skill menambahkan folder untuk file pendukung, kendali atas siapa yang memanggilnya, dan kemampuan Claude untuk memuatnya sendiri, jadi dokumentasi menyarankan skill untuk pekerjaan baru. Repositori ini tidak pernah punya folder .claude/commands/; sejak awal langsung memakai skills.

Kenapa description yang menentukan skill terpicu atau tidak?

Saat sesi dimulai, Claude Code memasukkan daftar nama dan description skill ke konteks, bukan isinya. Claude mencocokkan permintaan Anda dengan daftar itu, jadi kalau description tidak memuat kata-kata yang dipakai dalam permintaan, skill tidak akan pernah dimuat, sebagus apa pun instruksinya. Pemeriksaan pertama yang disarankan dokumentasi untuk skill yang tidak terpicu adalah: apakah description-nya memuat kata kunci yang biasa diucapkan orang.

Baca selengkapnya (2)

Ada dua batas yang memengaruhi cara menulisnya. Description, ditambah teks when_to_use yang opsional, dipotong di 1.536 karakter dalam daftar, jadi taruh kegunaan utamanya di awal. Lalu, kalau skill Anda banyak, Claude Code membuang sebagian description agar daftar muat dalam anggaran sekitar 1% dari context window, dimulai dari skill yang paling jarang dipanggil.

Keempat description di repositori ini ditulis sebagai daftar pemicu. Isinya menyebut file, skrip, dan istilah yang akan muncul di permintaan: BLOG_FIGURES, scripts/generate-blog-diagram.mjs, merge-blog-staging, JSON-LD. Panjang masing-masing sekitar 500 sampai 800 karakter, jauh di bawah batas, dan setiap isi skill tetap jauh di bawah 500 baris, batas atas yang disarankan dokumentasi untuk SKILL.md. Perhatikan juga urutannya: setiap description di repo ini dibuka dengan kegunaan utamanya, baru kemudian daftar file dan skrip, persis seperti saran dokumentasi agar kegunaan utama ditaruh di awal.

Kapan sebuah aturan sebaiknya jadi skill, bukan CLAUDE.md?

CLAUDE.md dimuat utuh di awal setiap sesi dan ikut terbawa di setiap request. Skill hanya membebani konteks sebesar description-nya sampai dipakai, baru kemudian isinya masuk ke percakapan. Pembagian dari dokumentasi: aturan "selalu lakukan X" masuk CLAUDE.md, sedangkan materi referensi yang hanya kadang dibutuhkan, atau workflow yang Anda panggil dengan nama, masuk skill. Patokannya, CLAUDE.md di bawah 200 baris; file di repo ini sudah jauh melewatinya, dan prosedur blog yang panjang di dalamnya adalah kandidat paling jelas untuk dipindah ke skill yang sudah ada.

Baca selengkapnya (2)

Begitu skill dimuat, isinya menetap. Kontennya masuk ke percakapan sebagai satu pesan dan Claude Code tidak membaca ulang file-nya di giliran berikutnya, jadi tulis instruksi yang berlaku terus, misalnya "jalankan test setiap selesai edit", bukan langkah sekali jalan. Setelah compaction, Claude Code menempelkan kembali setiap skill yang pernah dipanggil, tetapi hanya 5.000 token pertamanya, dengan total 25.000 token untuk semua skill, jadi taruh aturan terpenting di bagian atas.

Bagaimanapun, skill tetap panduan yang diterapkan Claude dengan pertimbangannya sendiri. Untuk aturan yang wajib berlaku setiap saat, halaman dokumentasi skills sendiri menyarankan memindahkannya ke hook, yang selalu berjalan pada event-nya, terlepas dari apakah Claude sedang mengikuti skill atau tidak. Itu topik pelajaran berikutnya.

Cara situs ini melakukannya

Konfigurasi nyata di balik pelajaran ini

Kutipan dari repositori yang membangun dan men-deploy situs ini, apa adanya.

.claude/skills/drawing-blog-diagrams/SKILL.md:1-4
---
name: drawing-blog-diagrams
description: Draw in-article explanatory diagrams for blog posts in this site's visual language instead of sourcing them. Use when adding a diagram, figure, illustration or in-article image to a blog post; when a borrowed diagram has foreign-language labels or is unreadable on the dark page; when working with scripts/generate-blog-diagram.mjs, BLOG_FIGURES, lib/blog-figures.ts, BlogFigure, the stack or columns layout, scripts/audit-blog-figures.mjs or scripts/review-blog-figures.mjs; and when the figure-fitness hook reports subject-absent, subject-distant, own-work-preferred, caption-restates-alt, alt-prefix, overused-figure or portrait-figure. Covers the palette, layout primitives, label writing rules, wiring a figure into a post bilingually, the audit gate and the fitness review.
---

Seluruh frontmatter skill diagram di repo ini: hanya name dan description. Description-nya berupa daftar pemicu. Dibuka dengan kegunaan utama, lalu menyebut skrip, registry, dan komponen yang akan muncul di permintaan, dan ditutup dengan kode temuan persis seperti yang dicetak hook gambar. Hasilnya, laporan hook dan skill memakai kata yang sama, sehingga skill yang tepat ikut terpanggil.

.claude/skills/publishing-blog-posts/SKILL.md:8-19
## Purpose

A published post is **six files that must agree**. Editing them by hand works
once and drifts by the third post, and the failure is silent — a missing key
breaks one locale of one page in production, which survives for months.

So nothing is hand-edited: content is staged, one script validates it
completely, and only then is anything written. This skill is that process and
the ways it has gone wrong.

For what to _write_, see **`writing-blog-content`**. For figures, see
**`drawing-blog-diagrams`**.

Isinya dibuka dengan alasan prosedur itu ada, lalu menyerahkan sisanya: apa yang ditulis ada di satu skill, gambar di skill lain. Skill kecil yang saling merujuk membuat sebuah tugas cukup memuat bagian yang dibutuhkan, bukan satu file panjang yang memuat semuanya sekaligus. Skill penulisan di repo ini juga dibuka dengan rujukan ke skill publishing dan skill diagram, jadi ketiganya saling menunjuk.

Yang sering rusak

Kesalahan yang benar-benar membuang waktu

  • Description yang terlalu umum

    "Membantu menulis blog" cocok dengan semua hal sekaligus tidak cocok dengan apa pun. Dokumentasi memperingatkan, kalau description terlalu umum atau saling tumpang tindih, Claude bisa memuat skill yang salah atau melewatkan skill yang sebenarnya dibutuhkan. Sebutkan file, command, dan frasa yang benar-benar muncul di permintaan.

  • YAML rusak yang gagal tanpa suara

    Kalau frontmatter gagal di-parse, atau --- pembuka tidak berada di baris pertama file, field yang Anda tulis tidak berlaku: /nama masih jalan, tetapi Claude tidak bisa mencocokkan permintaan dengan description Anda. Jalankan claude plugin validate .claude/skills, atau mulai dengan --debug untuk melihat error parse-nya.

  • Skill terlalu banyak, description dibuang

    Daftar skill punya anggaran. Kalau melebihi batas, Claude Code tetap menyimpan semua nama tetapi membuang description, mulai dari skill yang paling jarang dipakai, sehingga kata kunci pemicunya ikut hilang. Jalankan /doctor untuk melihat beban daftar itu, dan /skills lalu tekan t untuk mengurutkan skill berdasarkan jumlah token.

  • Yang akan saya ubah di sini: kode hook sudah bergeser

    Description skill diagram mencantumkan tujuh kode temuan, padahal scripts/review-blog-figures.mjs sekarang juga bisa melaporkan missing-translation dan audit. Laporan hook yang hanya berisi dua kode itu tidak lagi cocok dengan description-nya. Daftar pemicu yang disalin dari sebuah skrip harus ikut diperbarui setiap kali skrip itu mendapat kode baru.

Siapa yang bisa memanggil skill, dan bebannya sebelum dipanggil
(bawaan)YaYaDescription-nya
disable-model-invocation: trueYaTidakTidak ada
user-invocable: falseTidakYaDescription-nya
Coba sendiri

Lakukan di komputer Anda sendiri

Anda hanya butuh Claude Code dan satu repositori git. Buat satu skill yang termuat sendiri, lihat skill itu terpicu, lalu ubah menjadi command yang hanya jalan secara manual.

  1. Buat .claude/skills/summarize-changes/SKILL.md. Description-nya menjelaskan fungsinya, lalu menyebut kata-kata yang akan dipakai di permintaan sungguhan.

    ---
    description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
    ---
    
    ## Current changes
    
    !`git diff HEAD`
    
    ## Instructions
    
    Summarize the changes above in two or three bullet points, then list any risks you notice.
  2. Ubah file apa saja, jalankan Claude Code, lalu bertanya dengan kalimat biasa. Skill seharusnya termuat tanpa Anda sebut namanya. Setelah itu panggil langsung dengan mengetik namanya.

    claude
    > What did I change?
    > /summarize-changes
  3. Tambahkan disable-model-invocation: true ke frontmatter, mulai sesi baru, lalu bertanya lagi dengan kalimat biasa. Claude tidak lagi memuatnya; hanya /summarize-changes yang bisa.

    ---
    description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
    disable-model-invocation: true
    ---
  4. Buka /skills dan tekan t untuk mengurutkan berdasarkan jumlah token, lalu jalankan /context dan cari baris Skills. Bandingkan sebelum dan sesudah perubahan.

    /skills
    /context
Kuis singkat

Tiga pertanyaan sebelum lanjut

Pilih jawaban untuk melihat kenapa benar atau salah. Tidak ada yang disimpan atau dinilai, jadi tebak saja dengan bebas.

  1. 1.Description skill Anda berbunyi "Helps with blog posts". Anda meminta Claude menambahkan gambar ke sebuah post, dan skill itu tidak pernah dimuat. Apa perbaikannya?
  2. 2.Proyek Anda punya puluhan skill. Satu skill yang jarang dipakai tidak lagi termuat sendiri, padahal mengetik /nama-nya masih jalan. Apa penyebab yang paling mungkin?
  3. 3.Sebuah skill yang panjang menaruh aturan terpentingnya di bagian paling akhir. Setelah compaction, Claude berhenti mengikuti aturan itu. Kenapa?
Pikirkan dulu

Jawab dalam hati, lalu cek

  1. 1.Instruksi skill Anda sangat bagus, tetapi Claude tidak pernah memakainya kecuali Anda mengetik namanya. Apa yang pertama kali Anda periksa?Lihat jawabannya

    Jawaban:Description-nya. Claude mencocokkan permintaan dengan description di daftar skill, jadi description harus memuat kata-kata yang benar-benar diucapkan orang. Setelah itu pastikan frontmatter bisa di-parse: YAML yang rusak membuat skill termuat dengan metadata kosong, sehingga Claude tidak bisa mencocokkan description Anda.

  2. 2.Bagian mana dari skill dengan pengaturan bawaan yang sudah ada di konteks sebelum dipakai siapa pun?Lihat jawabannya

    Jawaban:Nama dan description-nya, ditambah when_to_use kalau diisi, dengan batas 1.536 karakter. Isinya baru dimuat saat Anda atau Claude memanggil skill itu, lalu bertahan di percakapan.

  3. 3.Prosedur deploy tidak boleh berjalan hanya karena Claude menilai kodenya sudah siap. Bagaimana cara mengaturnya?Lihat jawabannya

    Jawaban:Jadikan skill dengan disable-model-invocation: true. Hanya mengetik /deploy yang bisa menjalankannya, Claude Code memblokir upaya Claude memanggilnya sendiri, dan description-nya tidak masuk konteks sampai saat itu.

Pelajari lebih dalam

Bahasan mendalam terkait di situs ini