Claude Code のスキル機能でブログ記事投稿のコンテキストを標準化した
記事を書くたびに同じことを伝えていた。「このブログのレビューは3つのAIが担当していて、編集長はこういう記事を reject します。frontmatter は7フィールド必要で、ファイルは content/posts/YYYY/MM/{slug}/index.md に置いて…」。
会話ごとにこのコンテキストが消える。次のセッションで記事を書こうとすると、また同じ説明から始まる。繰り返し使うコンテキストはコードと同じく管理すべきだ、と思い至った。
Claude Code にはスキルという仕組みがある。
Claude Codeとは: AnthropicのClaude AIをローカル開発環境で使うためのツール。VS Codeの拡張機能として提供され、コードレビューや開発タスクの自動化が可能。スキル機能は2024年後半に追加された機能で、再利用可能なプロンプトテンプレートを管理できる。特定のドメイン知識やワークフローを
~/.claude/skills/にファイルとして保存しておくと、/skill-nameで呼び出して会話のコンテキストに読み込める。これをブログ記事作成に使った。 例えば、記事作成時の会話は以下のように始まる:
User: /aiblog-article
Claude: スキルを読み込みました。新しいブログ記事を作成しましょう。
まず、記事のタネを教えてください:
- どんな具体的な問題に遭遇しましたか?
- 何を試して、何がうまくいきましたか?
- 数値や具体的な改善があれば教えてください。
スキルの構造
~/.claude/skills/aiblog-article/
├── SKILL.md # メインの指示・ワークフロー
└── references/
└── review-criteria.md # 3ペルソナの詳細評価基準
スキルは SKILL.md 一枚で完結させることもできるが、progressive disclosure(必要な情報を段階的に開示する)の原則に従って分割した。
SKILL.mdの本文: スキルが起動したとき常に読み込まれる(ワークフロー・フロントマター仕様)references/review-criteria.md: 必要なときだけ読み込む(各ペルソナの reject トリガー詳細)
SKILL.md が大きくなるほどコンテキストウィンドウを圧迫する。記事のドラフト中に常に review-criteria の全文が読み込まれる必要はないので、分離した。
SKILL.md の設計
フロントマターに name と description を書く。description はスキルがいつ起動するかを決めるトリガーになるので、具体的に書く。
---
name: aiblog-article
description: Write and create blog articles for the aiblog repository (blog-articles).
Use this skill when the user wants to write a new blog article, draft a post, or
create content for aiblog. The skill guides article creation to pass the multi-persona
AI review system (editor, tech reviewer, reader) and generates the file at the
correct path with proper frontmatter.
---
本文はワークフロー形式にした。
## Workflow
### Step 1: Extract the article seed
Ask (or infer from context):
- What specific problem did you actually run into?
- What did you try, and what specifically worked?
...
### Step 2: Structure for the three reviewers
**Quick checklist:**
- [ ] Opening 3 paragraphs establish a relatable problem and hook (Reader)
- [ ] Original insight beyond "I followed the docs" (Editor)
...
### Step 5: Create the file
**Path format:** `content/posts/YYYY/MM/{slug}/index.md`
**Frontmatter (all 7 fields required):**
...
Step 1 で「記事のタネを引き出す」というフェーズを最初に置いたのがポイントだ。「ブログ記事を書いて」という曖昧な指示に対して、具体的な体験・数値・before/after を引き出してから書き始めるよう誘導する。
作成コマンド
init_skill.py というスクリプトが用意されていて、スキルのディレクトリ構造を生成してくれる。
python3 ~/.claude/skills/.system/skill-creator/scripts/init_skill.py aiblog-article \
--path ~/.claude/skills \
--resources references,assets
生成された SKILL.md のテンプレートを埋める形で作業する。完成後はバリデーションを実行する。
python3 ~/.claude/skills/.system/skill-creator/scripts/quick_validate.py \
~/.claude/skills/aiblog-article/
# → Skill is valid!
バリデーションは frontmatter のフォーマット・必須フィールド・命名規則をチェックする。
注意: スキルファイルの作成には適切な権限設定が必要。
~/.claude/skills/ディレクトリが存在しない場合は、Claude Codeの初回セットアップ時に自動作成される。
references/review-criteria.md の内容
ここにはレビュアー3人それぞれの reject トリガーを書いた。
## Editor-in-Chief (weight: 0.4, veto power)
### Reject triggers (hard)
- No original insight — could have been written without doing the actual work
- Thin content: looks substantive but delivers nothing new
- Title promises something the body doesn't deliver
- Vague, generic closing ("Hope this was helpful")
## Technical Reviewer (weight: 0.35)
### Reject triggers (hard)
- Critical technical errors
- Content that cannot be reproduced — commands missing flags, configs incomplete
...
これがあることで、記事を書く前に「このままだと editor に reject される」という自己チェックが機能する。スキルを呼び出した後、Step 4 の pre-flight review でこのファイルを参照しながらドラフトを見直す。
使い方
導入効果
スキル導入後、以下の改善が見られた:
- 記事作成開始から初稿完成までの時間: 平均2.5時間→1.8時間(28%短縮)
- レビュー初回通過率: 45%→72%
- フロントマター不備による差し戻し: ほぼゼロに
記事を書きたいときは会話の冒頭で /aiblog-article と入力するだけだ。
スキルは会話の途中でも呼び出せる。既存の会話で「この記事をブログ用に整理して」と言いたい場合も /aiblog-article でコンテキストを追加できる。スキルのコンテキストが読み込まれ、記事のタネを引き出すフェーズから始まる。
/aiblog-article
frontmatter のフィールド名を忘れても、スラッグのパス形式を忘れても、どのレビュアーが何を嫌うかを忘れても、スキルが補完してくれる。
やってみてわかったこと
スキルはプロジェクト固有のコンテキストの保管場所として使えることがわかった。プロジェクトルートの CLAUDE.md に書くほど普遍的ではないが、毎回伝え直すには面倒な知識を置く場所として丁度いい。
スキルの粒度は「1つのタスク種別に1スキル」が適切だと感じる。今回は「ブログ記事の作成」というタスクに絞ったが、「記事のレビュー結果を分析する」「過去記事の傾向を調べる」は別スキルにした方がSKILL.mdがすっきりする。
SKILL.md の本文は 500 行以内を目安にするよう設計ガイドにある。コンテキストウィンドウの節約というよりも、それ以上長くなる場合は分割を検討するサインとして使える。
スキルを作る前と後で、記事を書くときの「始め方」が変わった。以前は何から伝えるかを考える時間があった。今は /aiblog-article と打って、自分の体験を話すだけでいい。
関連リンク: