Claude Code Skill設計10パターン|確実に発火するdescriptionと運用テンプレ | 10 Claude Code Skill Design Patterns: Descriptions and Templates That Trigger Reliably

Claude CodeのSkillは便利だが、descriptionが曖昧だと発火しない。ZYL0 BlogのSkills運用を題材に、確実に呼ばれるSkill設計パターン、悪い例、テンプレ、検証方法を実装目線で整理する。

22nd May 2026
Claude Code Skill設計パターンと発火条件を示す開発ワークフロー

Claude Code Skill設計10パターン|確実に発火するdescriptionと運用テンプレ

Claude CodeのSkillは、使い始めるとかなり強力です。ただ、最初に詰まるのはだいたい同じです。Skillを書いたのに発火しない。 私もZYL0 Blog用に投資記事、クリエイター記事、技術記事のSkillを分けたとき、最初のdescriptionが抽象的すぎて、思った場面で呼ばれませんでした。

この記事では、実際にこのブログで使っているSkill運用を題材に、確実に呼ばれるdescriptionとSKILL.mdの設計パターンをまとめます。2026年5月時点のClaude Codeでは、Skill、Subagent、Hook、MCP、Plan modeがそれぞれ役割を持つので、Skillだけに詰め込みすぎないのも大事です。

Version note: 2026年5月時点のClaude Codeドキュメントと、ZYL0 BlogのローカルSkill運用を前提にしています。CLIや設定仕様は変わる可能性があります。

TL;DR:この記事でわかること

テーマ学べること
descriptionSkillが発火しやすい書き方
trigger phrasesユーザー文に反応する具体語の置き方
scopeSkillに入れること、入れないこと
validationSkillが呼ばれるか確認する方法
operations複数Skillをブログ運用で使い分ける型

1. descriptionは「何をする」より「いつ呼ぶ」を書く

最初にかなり大事なところです。Skillのdescriptionは自己紹介ではなく、ルーティング条件です。

悪い例:

description: Write blog posts for my site.

これだと、どんな記事でも呼ばれるのか、どんな形式で出すのか、どこに保存するのかが曖昧です。

良い例:

description: >
  Write bilingual Japanese + English technical blog posts for ZYL0 Blog.
  Use when the user asks for a developer tutorial, coding guide,
  architecture deep-dive, MCP article, Claude Code article, or implementation notes.
  Output a Nuxt Content Markdown file under content/blogs/ with ::lang-block sections.

私の感覚では、descriptionには最低でも以下を入れた方が安定します。

要素
対象読者programmers, creators, investors
入力トリガー"記事を書いて", "Claude Code", "MCP", "投資テーマ"
出力形式bilingual Markdown, Nuxt Content, ::lang-block
保存先content/blogs/
除外条件code blocks avoided, no inline HTML など

Skillは「便利なメモ」ではなく、CodexやClaudeにとってのルーティングテーブルだと考えると設計しやすいです。


2. 抽象語ではなく、ユーザーが実際に言う語を入れる

発火率を上げる一番簡単な方法は、ユーザーが入力しそうな言葉をdescriptionにそのまま入れることです。

description: >
  Use whenever the user asks to write a technical article,
  developer tutorial, coding guide, tool comparison,
  architecture deep-dive, or says "記事にして", "実装してみた",
  "Claude Code", "MCP", "API integration", or "AI engineering".

私は最初、「technical content」とだけ書いていました。でも実際の依頼文は「MCPの記事」「Claude Codeの使い方」「技術記事にして」のようにもっと具体的です。Skill側がその言葉を知らないと、別の一般Skillに流れやすい。

ここはSEOに似ています。きれいな抽象語より、読者が検索窓に入れる生々しい語の方が効きます。


3. Skillを巨大化させず、読者別に分ける

ZYL0 Blogでは、少なくとも3種類の記事があります。

Skill読者文体
zyl0-blog-writer投資家、CVC、個人投資家データ、シナリオ、銘柄
zyl0-creator-blog-writerクリエイター、SNS発信者共感、体験、CTA
zyl0-tech-blog-writerエンジニア、開発者実装、コード、落とし穴

1つのSkillに全部入れると、毎回トーンがぶれます。特にブログ運用では、読者ごとに「良い記事」の条件が違う。投資記事はシナリオ分析が必要ですが、クリエイター記事では長い銘柄表は邪魔です。技術記事ではコードとバージョン注記が必要ですが、一般向け記事では重くなりすぎる。

Skillは、機能別より判断基準別に分けた方が使いやすいと感じています。


4. Frontmatterや保存先は曖昧にしない

ブログ記事生成Skillなら、frontmatterの順番まで固定した方が事故が減ります。

---
title: '日本語タイトル | English Title'
description: '日本語の概要。80〜160字。'
date: '22nd May 2026'
image: '/blogs-img/blog-slug.png'
alt: '画像説明'
ogImage: '/blogs-img/blog-slug.png'
tags: ['テック解説', 'AI活用']
tagsEn: ['Tech Deep Dive', 'AI Tools']
published: true
---

ここを「適切なfrontmatter」と書くだけだと、フィールド名や順番が毎回揺れます。Nuxt Contentではfrontmatterの欠落がビルドやカード表示に効くので、Skillに具体例を入れておく価値があります。

私のおすすめは、正しい例を1つだけ置くことです。複数パターンを置くと、逆に迷います。


5. MDCの許可範囲を明示する

Nuxt ContentではMDCが便利ですが、記事本文に好き勝手なコンポーネントを入れると、保守が重くなります。ZYL0 Blogでは、記事本文の基本は

::lang-block
だけにしています。

::lang-block{lang="ja"}

# 日本語タイトル

本文...

::

---

::lang-block{lang="en"}

# English Title

Body...

::

Skillに「MDCを使ってよい」とだけ書くと、勝手なカードやalert風コンポーネントを使う可能性があります。だから「

::lang-block
のみ可」「インラインHTML禁止」まで書きます。

この手の制約は、モデルを縛るためというより、未来の自分を助けるためです。半年後に記事を直すとき、本文がシンプルなMarkdownに近いほど楽です。


6. 「必ず入れるもの」と「できれば入れるもの」を分ける

Skillに全部を必須扱いで書くと、出力が重くなります。逆に、何も必須にしないと品質が揺れます。私は以下のように分けています。

種類
必須日英完全ブロック、frontmatter、免責文、タグ
強く推奨TL;DR表、シナリオ分析、次号案
任意筆者の経験談、追加図表、比較表

技術記事では、コードブロックと落とし穴は必須に近い。一方、クリエイター記事ではコードは原則なし。ここをSkillごとに分けると、出力がかなり安定します。


7. 悪い例を1つ入れる

意外と効くのが、悪い例です。

# Bad
description: Write high quality content.

# Good
description: >
  Use when the user asks for a bilingual ZYL0 Blog post about investing,
  geopolitics, energy, AI infrastructure, semiconductors, space,
  robotics, or startup themes.

悪い例を置くと、どの抽象度がダメなのかが伝わりやすい。人間のチーム運用でも同じですが、良い例だけだと境界が見えにくいです。

私がDD品質基準をチームで標準化したときも、「良いメモ」だけでなく「投資委員会で刺されるメモ」を見せた方が早かった。Skill設計もかなり似ています。


8. Skillに調査手順を入れるが、情報源を固定しすぎない

技術記事や投資記事では、古い情報が一番危険です。だからSkillには、執筆前に公式ドキュメント、リリースノート、GitHub、ニュース、決算資料を確認する、と書きます。

ただし、情報源を固定しすぎると、新しい一次情報を取り逃がします。私ならこう書きます。

Before writing, verify current facts with 5-8 searches:
- official documentation or release notes
- GitHub changelog/issues where relevant
- recent market/news sources
- primary company or university announcements where available

Do not include uncertain API specs or code examples.

重要なのは、「調べること」より「不確かなものを書かないこと」です。技術記事で動かないコードを置くと、読者の信頼は一気に落ちます。


9. 検証コマンドまでSkillに入れる

記事生成Skillでも、最後に何を確認するかを書いておくと便利です。

After writing:
- check frontmatter fields
- confirm both lang-blocks close with ::
- run npm run lint when code files changed
- run npm run build before commit

もちろん、記事だけなら毎回lint/buildが必要とは限りません。ただ、ブログ全体を変更する運用では「最後に何を見るか」がSkill内にあるだけで事故が減ります。私の場合、公開前の確認漏れがかなり減りました。


10. Skill、Subagent、Hook、MCPの役割を混ぜない

最後に、Skillに入れすぎないための整理です。

仕組み得意なこと入れない方がよいこと
Skill手順、文体、出力形式、制約長時間の独立調査
Subagent独立した調査、レビュー、分担常時必要な文体ルール
Hook実行前後の強制チェック判断が必要な執筆方針
MCP外部データへの接続ローカル記事フォーマット

Skillは「この作業はどうやるか」を教える場所です。Subagentは「この調査を分けてやってきて」と頼む場所。Hookは事故防止。MCPは外部状態への接続。ここを混ぜると、どの層で何を直すべきか分からなくなります。

私の現在の運用では、Skillが記事の型を決め、リサーチは必要に応じて別に走らせ、最後はlint/buildで確認します。地味ですが、これが一番壊れにくいです。


まとめ:Skillは「才能」ではなく「運用ルール」を保存する場所

Skill設計で一番大事なのは、魔法のプロンプトを作ることではありません。毎回の判断を減らすことです。

すぐ使えるテンプレを最後に置きます。

---
name: project-specific-writer
description: >
  Use when the user asks for [task type] for [project/audience],
  especially with phrases like [trigger phrase 1], [trigger phrase 2],
  or [trigger phrase 3].
  Produce [exact output format] at [path], following [key constraints].
---

この型に沿って、対象読者、トリガー語、出力形式、保存先、禁止事項を入れる。それだけでSkillの発火率はかなり上がります。最初から完璧に作る必要はありません。むしろ、発火しなかった依頼文を1つずつdescriptionへ戻していく方が、実戦では強いです。


Next Issue Ideas

  • MCPで社内ナレッジを接続する最短ルート:DDメモ、ポートフォリオ情報、過去提案をClaude Codeに接続する30分実装。
  • Hooksで事故らない開発環境を作る:PreToolUse、PostToolUse、Stopを使った実用テンプレ集。
  • Subagentを使ったブログリサーチ分業:投資、技術、読者ニーズを並列調査して1本の記事に統合する運用。

本記事は技術情報の共有を目的としたもので、特定サービスの利用を推奨するものではありません。執筆過程で生成AIの支援を活用しています。本サイトの注意事項はこちらをご覧ください。


10 Claude Code Skill Design Patterns: Descriptions and Templates That Trigger Reliably

Claude Code Skills become powerful very quickly once you start using them. But the first failure mode is almost always the same: you wrote a Skill, and it does not trigger when you expect it to. I hit this when I split ZYL0 Blog into investment, creator, and technical writing Skills. My first descriptions were too abstract, so the right Skill did not always get selected.

This article uses my actual blog workflow as the reference point and turns it into design patterns for descriptions and SKILL.md files. As of May 2026, Claude Code has Skills, subagents, hooks, MCP, and Plan mode, each with a distinct role. One practical rule: do not stuff all of them into a Skill.

Version note: This is based on Claude Code documentation and my local ZYL0 Blog Skill workflow as of May 2026. CLI and configuration behavior can change.

TL;DR: What You'll Learn

TopicWhat you'll learn
descriptionHow to make Skills easier to route to
trigger phrasesHow to include the words users actually type
scopeWhat belongs in a Skill and what does not
validationHow to check whether the Skill is being selected
operationsHow to run multiple Skills in one publishing workflow

1. Write "When to Use This," Not Only "What This Does"

This is the core point. A Skill description is not a bio. It is routing metadata.

Bad:

description: Write blog posts for my site.

This does not say which posts, what format, where to save them, or when the Skill should beat other Skills.

Better:

description: >
  Write bilingual Japanese + English technical blog posts for ZYL0 Blog.
  Use when the user asks for a developer tutorial, coding guide,
  architecture deep-dive, MCP article, Claude Code article, or implementation notes.
  Output a Nuxt Content Markdown file under content/blogs/ with ::lang-block sections.

At minimum, I want the description to contain:

ElementExample
Audienceprogrammers, creators, investors
Input triggers"write an article", "Claude Code", "MCP", "investment theme"
Output formatbilingual Markdown, Nuxt Content, ::lang-block
Destinationcontent/blogs/
Exclusionscode blocks avoided, no inline HTML, etc.

Think of a Skill as a routing table, not a helpful note. That mental model makes design easier.


2. Use the Words Users Actually Type

The easiest way to improve trigger reliability is to include realistic user phrases.

description: >
  Use whenever the user asks to write a technical article,
  developer tutorial, coding guide, tool comparison,
  architecture deep-dive, or says "記事にして", "実装してみた",
  "Claude Code", "MCP", "API integration", or "AI engineering".

My first version said only "technical content." But users do not speak that way. They say "an MCP article," "how to use Claude Code," or "turn this into a technical post." If the Skill does not name those phrases, the request can route elsewhere.

This is close to SEO. Elegant abstract language is less useful than the messy words people actually type.


3. Split Skills by Audience, Not Only by Function

ZYL0 Blog has at least three article types.

SkillAudienceStyle
zyl0-blog-writerinvestors, CVCs, individual investorsdata, scenarios, stocks
zyl0-creator-blog-writercreators and social publishersempathy, experience, CTA
zyl0-tech-blog-writerengineers and developersimplementation, code, gotchas

If one Skill handles all three, tone drifts. For blog work, "good article" means different things for different readers. Investment posts need scenarios. Creator posts need empathy and action. Technical posts need code, versions, and failure modes.

I have found Skills more useful when split by decision criteria, not merely by function.


4. Make Frontmatter and Paths Explicit

For a blog-writing Skill, frontmatter should be specified concretely.

---
title: '日本語タイトル | English Title'
description: 'Japanese description, 80-160 characters.'
date: '22nd May 2026'
image: '/blogs-img/blog-slug.png'
alt: 'Image description'
ogImage: '/blogs-img/blog-slug.png'
tags: ['テック解説', 'AI活用']
tagsEn: ['Tech Deep Dive', 'AI Tools']
published: true
---

If you write "use appropriate frontmatter," fields and order drift. In Nuxt Content, missing metadata can affect builds and cards, so examples are worth the space.

My preference is to include one correct example. Multiple examples often create unnecessary choice.


5. Define the Allowed MDC Surface

MDC is useful in Nuxt Content, but if articles start using random components, maintenance gets heavier. In ZYL0 Blog, the body should generally use only

::lang-block
.

::lang-block{lang="ja"}

# 日本語タイトル

本文...

::

---

::lang-block{lang="en"}

# English Title

Body...

::

If a Skill merely says "MDC is allowed," it may introduce custom cards or alerts. I prefer to write "

::lang-block
only" and "no inline HTML."

This is less about constraining the model and more about helping future maintenance. Six months later, simple Markdown is easier to edit.


If everything is mandatory, outputs become bloated. If nothing is mandatory, quality drifts. I separate elements like this:

TypeExamples
Requiredcomplete JP/EN blocks, frontmatter, disclaimer, tags
Strongly recommendedTL;DR table, scenario analysis, Next Issue Ideas
Optionalpersonal story, extra diagrams, comparison tables

For technical posts, code and gotchas are close to required. For creator posts, code blocks are usually noise. Encoding that per Skill stabilizes output.


7. Include One Bad Example

Bad examples help more than expected.

# Bad
description: Write high quality content.

# Good
description: >
  Use when the user asks for a bilingual ZYL0 Blog post about investing,
  geopolitics, energy, AI infrastructure, semiconductors, space,
  robotics, or startup themes.

A bad example shows the boundary. Good examples alone can make the abstraction level hard to infer.

When I standardized diligence quality at a prior CVC, showing "good memos" helped. Showing "memos that get challenged in investment committee" helped faster. Skill design has the same flavor.


8. Add Research Instructions Without Over-Fixing Sources

For technical and investment writing, stale information is the biggest risk. The Skill should say to verify official documentation, release notes, GitHub, news, company announcements, and primary sources where relevant.

But do not freeze the source list too tightly. I would write:

Before writing, verify current facts with 5-8 searches:
- official documentation or release notes
- GitHub changelog/issues where relevant
- recent market/news sources
- primary company or university announcements where available

Do not include uncertain API specs or code examples.

The key is not "do research" as a ritual. The key is "do not publish uncertain claims." In technical writing, one broken code sample can cost a lot of trust.


9. Put Validation Steps in the Skill

Even a writing Skill should say what to check at the end.

After writing:
- check frontmatter fields
- confirm both lang-blocks close with ::
- run npm run lint when code files changed
- run npm run build before commit

Not every article-only change needs lint and build, but for a blog workflow that often touches code, having the exit checks inside the Skill reduces misses. It has reduced my own publishing mistakes.


10. Do Not Mix Skill, Subagent, Hook, and MCP Responsibilities

The final pattern is about avoiding overload.

MechanismBest atAvoid putting here
Skillworkflow, tone, output format, constraintslong independent investigations
Subagentisolated research, review, parallel workalways-on writing style
Hookforced checks before/after actionsjudgment-heavy editorial decisions
MCPexternal data and system accesslocal article formatting rules

A Skill tells the agent how this work should be done. A subagent is for "go investigate this separately." A hook is for accident prevention. MCP is for external state. Mixing them makes it hard to know where a problem should be fixed.

My current workflow is simple: Skills define article shape, research runs separately as needed, and lint/build verify the repo before publishing. It is not flashy, but it is resilient.


Conclusion: Skills Store Operating Rules, Not Magic

The most important part of Skill design is not writing a magical prompt. It is removing repeated decisions.

Here is the template I would start from:

---
name: project-specific-writer
description: >
  Use when the user asks for [task type] for [project/audience],
  especially with phrases like [trigger phrase 1], [trigger phrase 2],
  or [trigger phrase 3].
  Produce [exact output format] at [path], following [key constraints].
---

Add the audience, trigger phrases, output format, destination, and prohibited patterns. That alone improves trigger reliability. You do not need perfection on day one. In practice, the strongest Skill descriptions are built by taking the requests that failed to trigger and folding those phrases back into the description.


Next Issue Ideas

  • The shortest path to connecting internal knowledge over MCP — DD memos, portfolio data, and old proposals inside Claude Code.
  • A zero-accident dev environment with Hooks — practical PreToolUse, PostToolUse, and Stop templates.
  • Blog research with Subagents — splitting investment, technical, and reader-needs research before merging one article.

This article is intended as technical knowledge sharing and is not a recommendation of any specific service. Generative AI was used to assist drafting. See our disclaimer for full details.