mcpField
P
publish-skill

publish-skill

github.com/glebis開発40485 回インストール4 日前に更新
リポジトリ

publish-skill について

スキルリポジトリの内容を claude-skills-site Astro ウェブサイトの MDX ページにする公開ワークフローのスキルです。メタデータを整え、対象バンドルを更新し、ヒーロー画像も生成できます。更新モードとドライランに対応しています。

主な機能

  1. 01ソーススキルファイルの読み込み
  2. 02MDX のメタデータと本文の生成
  3. 03サイトのバンドルへのスキル追加
  4. 04更新モードとドライランへの対応
  5. 05デフォルトでのヒーロー画像生成

活用シーン

  1. 01新しいスキルのサイト公開
  2. 02既存スキルページの更新
  3. 03ファイルやバンドル変更の事前確認
  4. 04スキル用ヒーロー画像の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/glebis/claude-skills --skill publish-skill

インストール後、Claude Code で/publish-skillを入力して読み込まれたか確認します。

詳細

サイトにスキルを公開する

スキルを claude-skills-site Astro ウェブサイトに公開するための全プロセスを自動化します。

パス

  • スキルリポジトリ: ~/ai_projects/claude-skills/
  • サイトリポジトリ: ~/ai_projects/claude-skills-site/
  • サイトのスキル: ~/ai_projects/claude-skills-site/src/content/skills/*.mdx
  • サイトのバンドル: ~/ai_projects/claude-skills-site/src/content/bundles/*.mdx

実行方法

/publish-skill <skill-name>              # New skill — generates a hero image by default
/publish-skill <skill-name> --update     # Regenerate existing .mdx (+ hero image)
/publish-skill <skill-name> --dry-run    # Show what would be written, no commits, no image
/publish-skill <skill-name> --no-image   # Skip hero-image generation

ワークフロー

以下のフェーズを順番に実行します。エラーが発生した場合は停止して報告します。

フェーズ 1 — ソースの特定と読み込み
  1. ~/ai_projects/claude-skills/<skill-name>/SKILL.md が存在するか確認します。あわせて ~/.claude/skills/<skill-name>/SKILL.md も確認します。
  2. どちらも存在しない場合は、エラーを報告します:「<skill-name> の SKILL.md が見つかりません。スキルディレクトリがスキルリポジトリまたは ~/.claude/skills/ にあることを確認してください。」
  3. 両方が存在する場合は、内容を比較します。~/.claude/skills/ のファイルの方が新しい場合(mtime に基づく)、rsync -av --exclude='*.egg-info' --exclude='__pycache__' でスキルリポジトリに同期し、変更をコミットしてプッシュします。これにより、スキルリポジトリを常に最新の状態に保てます。
  4. SKILL.md を読み込みます(同期後はスキルリポジトリ側のコピーを優先します)。以下を抽出します。
    • YAML フロントマターの name
    • YAML フロントマターの description
    • 本文(フロントマターの閉じ区切り --- より後のすべての内容)
  5. ~/ai_projects/claude-skills/<skill-name>/README.md が存在するかも確認します。存在する場合は、補足情報として読み込みます。
フェーズ 2 — 既存の MDX を確認
  1. ~/ai_projects/claude-skills-site/src/content/skills/<skill-name>.mdx がすでに存在するか確認します。
  2. 存在し、--update が指定されていない場合は、停止して確認を求めます。「スキル <skill-name> の .mdx はすでにサイトにあります。再生成するには --update を指定するか、上書きを確認してください。」
  3. 存在し、--update が指定されている場合は、既存の .mdx を読み込みます。既存ファイルの以下のフィールドは再生成せず、そのまま維持します。
    • apothecary_name
    • hero_image
    • auto_activity
    • auto_last_synced(本日の日付に更新します)
フェーズ 3 — MDX フロントマターを生成する

各フィールドを生成します。

name — スキルのディレクトリ名を使用します(kebab-case)。ファイル名と一致している必要があります。

tagline — 80 文字以内の一文です。スキルの内容を平易な言葉で要約します。ピリオドで終わらせます。「A skill that...」で始めず、動作を表す動詞または生成するものから始めます。

apothecary_name — 昔ながらの薬屋を思わせる、詩的な 2〜4 語の名前です。既存のパターンに従います。

  • "The Listener's Ear" (meeting-intelligence)
  • "The Scholar's Deep Draught" (deep-research)
  • "The Artificer's Bench" (developer-tools)
  • "The Therapist's Grimoire" (cognitive-toolkit)
  • "The [Noun]'s [Noun]" または "[Noun] of [Noun]" のパターンを使用します。

bundle — スキルの目的を次のカテゴリと照らし合わせて分析し、最適なバンドルを選択します。

Bundle keyNameCovers
meeting-intelligence会議インテリジェンス文字起こし、会議、録音、アクションアイテム、動画・音声処理
communicationコミュニケーションメール、メッセージング、Telegram、Google Workspace、Zoom
researchリサーチウェブリサーチ、検索、画像の調達、ナレッジ検索
content-publishingコンテンツと公開画像生成、プレゼンテーション、PDF、レポート、ブランド素材、ビジュアルツール
personal-analyticsパーソナル分析健康データ、ディクテーション分析、閲覧履歴、内省、ハードウェア信号、ナレッジの可視化
thinking-strategy思考と戦略意思決定フレームワーク、JTBD、対話モード、認知ツール、セルフデザイン
developer-tools開発者ツールTDD、LLM CLI、課題追跡、セッション検索、コードツール
lab-consultingラボとコンサルティングラボミーティング、クライアントのニーズ把握、振り返り、デモ

スキルが複数のバンドルに当てはまる場合は、最も独自性を発揮できるバンドルを優先します。判断が本当に難しい場合は、ユーザーに確認します。

tags — 小文字の kebab-case タグを 3〜6 個設定します。スキルの分野、使用するツール、出力の種類から導きます。既存のスキルで使われているタグも確認します。

accent_color — 検証済みのセットから選択します:amber(デフォルト)、blue、cyan、green、orange、purple、violet。ほかの色を選ぶ強いテーマ上の理由(例:ハードウェア/信号 → cyan、メンタルヘルス → violet、自然/戦略 → green)がない限り、amber を使用します。

auto_description — SKILL.md のフロントマターにある description フィールドをそのままコピーします。200 文字を超える場合は切り詰めます。

auto_triggers — SKILL.md の説明から、トリガーフレーズを 0〜3 個抽出します(例:「queries like」、「check my email」)。明確なトリガーがなければ空の [] にします。

auto_tools — [] のままにします。

auto_last_synced — 今日の日付を YYYY-MM-DD 形式で指定します。date +"%Y-%m-%d" を実行して取得します。

auto_last_commit — git -C ~/ai_projects/claude-skills log -1 --format="%Y-%m-%d" -- <skill-name>/ を実行して、そのスキルディレクトリの最終コミット日を取得します。

auto_activity — 新しいスキルの場合は [] のままにします。--update の場合は既存の .mdx から引き継ぎます。

install_command — "" のままにします。

repo_path — スキルのディレクトリ名(name と同じ)です。

dependencies — SKILL.md の要件/前提条件のセクションから抽出します。必要な Python パッケージ、CLI ツール、API を一覧にします。なければ [] を指定します。

hero_image — この段階ではコメントアウトしたままにします(# hero_image:)。フェーズ 6.5 ではデフォルトでヒーロー画像を生成し、このフィールドを生成されたパスに書き換えます。--no-image が指定された場合(または画像生成に失敗し、リポジトリのスクリーンショットも存在しない場合)に限り、コメントアウトしたままにします。

フェーズ 4 — MDX 本文を生成する

次の構成に厳密に従って本文を作成します。

## What it does

[2-3 sentences describing the skill's primary function. Be specific about what it produces or enables. Reference concrete tools, APIs, or protocols if relevant.]

## Key features

[Bulleted list of 4-6 distinguishing features. Each bullet: **Bold label** — explanation. Focus on what makes this skill interesting, not obvious capabilities.]

## When to use

[1-2 sentences describing the trigger scenarios. Start with "When..." to match the existing pattern.]

関連する場合にのみ、次のセクションを追加します。

  • ## Signals または ## Modes — スキルに名前付きの運用モードまたはシグナルの種類がある場合
  • ## How it works — スキルが一般的でないプロトコル(MIDI、MCP など)を使用する場合

次の内容は含めないでください:インストール手順、クイックスタートコマンド、コードブロック、依存関係の一覧。これらはサイトの .mdx ではなく、SKILL.md と README に記載します。

フェーズ 5 — 検証する

作成する前に、次の項目を確認します。

  1. バンドルが存在すること: ~/ai_projects/claude-skills-site/src/content/bundles/<bundle>.mdx が存在することを確認します。
  2. 重複がないこと: --update を指定していない場合、.mdx がすでに存在しないことを確認します(フェーズ 2 で処理済み)。
  3. アクセントカラーが有効であること: 次のいずれかである必要があります:amber、blue、cyan、green、orange、purple、violet。
  4. 名前が一致すること: name フィールド、repo_path、ファイル名がすべて一致している必要があります。
  5. タグラインの長さ: 100 文字未満である必要があります。

いずれかの確認に失敗した場合は、該当するエラーを報告して中止します。

フェーズ 6 — ファイルを書き込む
  1. .mdx ファイルを書き込む: ~/ai_projects/claude-skills-site/src/content/skills/<skill-name>.mdx に書き込みます。
  2. バンドルを更新する: 対象のバンドル .mdx を読み込みます。まだ含まれていない場合は、skills: 配列の末尾にスキル名を追加します。
  3. --dry-run を指定した場合:書き込みの代わりに、.mdx の全文とバンドルへの変更内容を表示して終了します。
フェーズ 6.5 — ヒーロー画像を生成する(デフォルト。--no-image でスキップ)

このフェーズはデフォルトで実行されます。--no-image が指定された場合、または --dry-run の場合(生成せずに予定内容を表示)にのみスキップします。

/codex スキルを使ってヒーロー画像を生成します。Codex には、API キーなしで画像を生成できる組み込みの image_gen ツールがあります。画像は、Codex の最初のデザインセッションで確立された、サイトの薬局を思わせるビジュアルスタイルに沿ったものにします。代替手段: /codex が利用できない場合、またはその image_gen が失敗した場合は、同じプロンプトと同じ 16:9 の目標サイズ/パスを使い、gpt-image-2 または nano-banana スキルで再生成します。

プロンプトのテンプレート — SKILL_NAME、APOTHECARY_NAME、SCENE_BACKDROP、SUBJECT、COMPOSITION_DETAIL、AVOID_EXTRA を埋めます。

Use case: stylized-concept
Asset type: 16:9 skill hero image for the Claude Skills site
Primary request: Create a skill-specific hero artwork for the skill "SKILL_NAME", apothecary name "APOTHECARY_NAME". No readable text.
Style reference: Match the existing main site hero style: dark apothecary workbench fused with developer terminal artifacts, hand-tinted copperplate engraving, technical diagram overlays, tactile paper grain, oxidized copper, medicinal green, ink brown, warm bone, tiny electric-blue signal accents.
Scene/backdrop: SCENE_BACKDROP
Subject: SUBJECT
Composition: Wide 16:9, COMPOSITION_DETAIL, quiet dark negative space left, no border.
Lighting: Low raking desk light, sharp engraving detail, warm copper highlights.
Avoid: no readable words, no logos, no human figures, AVOID_EXTRA, no stock-photo look, no neon sci-fi.

既存のヒーロー画像で使われた正確なプロンプト(スタイル/構成の参考として使用):

tdd(「テストの金床」):

  • シーン:真鍮の計測器、引き出し、ガラス瓶、半透明のコマンドカードが置かれた、薬局キャビネットの中の頑丈な作業台。
  • 主題:テスト用の作業台として使われる小さな鍛冶屋の金床。赤い封蝋、緑色に光る試薬、磨かれた真鍮のリファクタリングツールで、3 つの異なる段階を表現する。小さなチェックリストと、金属に刻まれたコードの括弧記号。
  • 構図の詳細:金床と 3 段階のテストの儀式を、中央より右に配置する
  • 追加要素として避けるもの:ありきたりなファンタジーの鍛冶場、煙が多い場面

jtbd(「採用のコンパス」):

  • シーン:インタビュカード、機会マップ、小さなサンプル瓶、真鍮のコンパス、抽象的な記号だけで表された引き出しラベルが並ぶ、研究者の薬局デスク。
  • 主題:顧客の仕事の星座を指し示す真鍮のコンパス、レビュー分析用のカード、機会を評価する小さな天秤、抽象的な括弧が描かれた半透明のターミナルカード。
  • 構図の詳細:コンパスと機会マップを中央より右に配置する
  • 追加要素として避けるもの:企業向けストック画像、ありきたりなグラフ、明るく平坦な UI、ぼやけた光

skill-studio(「自動化の設計者」):

  • シーン:真鍮のノギス、小さな引き出し、羊皮紙のワークフローマップ、インデックスカード、半透明のターミナル用レシピカードが並ぶ、精密な薬局の製図台。
  • 主題:建築家のコンパス、インタビュー質問カード、フローチャートマップ、小瓶のようなモジュールを、体系的な自動化設計図として配置する。
  • 構図の詳細:下部と右側に細部を配置し、必要に応じてページのテキストを重ねられるよう、余白を静かに残す
  • 追加要素として避けるもの:現代的なストックフォト風の見た目、ぼやけた光、判読可能な UI テキスト telegram-telethon(「デーモンの中継機」):
  • シーン:中継コイル、真鍮製スイッチ、抽象的な印が付いたラベル付き引き出し、封印されたメッセージ筒、ガラスの小瓶が並ぶ、薬局の通信作業台。
  • 主題:デーモンの中継装置。真鍮製の電信キー、半透明カードに刻まれた紙飛行機のようなメッセージ記号、音声波形の小瓶、引き出しと端末カードの間を走る青い信号線。
  • 構図の詳細:中継装置とメッセージ筒を中央右に配置し、左側は暗めのネガティブスペースにします。
  • 避けるもの:Telegram のロゴ、ブランドマーク、現代的なスマートフォンのモックアップは使用しません。

agency-docs-updater(「出版者のエンジン」):

  • シーン:端末レシピカード、アーカイブ用引き出し、リール、書類トレイにつながった、コンパクトな薬局の出版印刷機。
  • 主題:会議の文字起こしの巻物を3つの出力に変換する真鍮製エンジン。ビデオリールの記号、製本されたドキュメントシート、整理された索引カードを生成します。コンベヤーベルト、歯車、墨消しのベール状の帯、同期した青い軌跡線も描きます。
  • 構図の詳細:出版エンジンを中央右に配置します。
  • 避けるもの:YouTube のロゴ、ブランドマーク、現代的な UI スクリーンショット、一般的なプリンターは使用しません。

vision-bench(「判定者のルーペ」):

  • シーン:比較用トレイ、標本用引き出し、半透明の画像プレート、真鍮製の光学機器が並ぶ、暗い薬局の判定台。
  • 主題:並べた2枚の画像プレートを調べる大きな判定者のルーペ、小さな採点用のおもりと校正用の小瓶、抽象的な目の図として表現したビジョンモデルの記号、評価カードをつなぐ青い信号の軌跡。
  • 構図の詳細:ルーペと画像比較用プレートを中央右に配置します。
  • 避けるもの:リアルな眼球、現代的な UI スクリーンショット、ストック画像のような一般的なカメラは使用しません。

主題の作成ガイドライン:

  • スキルの中核となる動作を、薬局や工房の物理的なメタファーに置き換えます。
  • 各主題には、中心となるオブジェクト(かなとこ、コンパス、ルーペ、エンジンなど)、補助的なディテールオブジェクト(カード、小瓶、記号など)、さりげないデジタルの軌跡(青い信号線、端末のブラケットなど)を含めます。
  • そのスキルの機能を知っている人が、メタファーを見てすぐに認識できるようにします。
  • 主題の説明は1〜2文に収めます。

手順:

  1. スキルの目的に基づき、すべてのテンプレート項目(シーン、主題、構図、避けるもの)を作成します。
  2. 組み立てたプロンプトを使って /codex スキルを呼び出し、16:9 の画像を ~/ai_projects/claude-skills-site/public/images/SKILL_NAME-hero.jpg に保存するよう依頼します。
  3. 画像が作成されたこと、およびサイズがおよそ1672x941ピクセル(既存のヒーロー画像の標準サイズ)であることを確認します。
  4. .mdx のフロントマターを更新します。# hero_image: を hero_image: "/images/SKILL_NAME-hero.jpg" に変更します。
  5. フェーズ8で画像ファイルを .mdx と一緒にステージングします。

Codex が利用できない場合、または画像生成に失敗した場合は、ユーザーに警告し、画像なしで続行します。このスキルはヒーロー画像がなくても問題なく公開できます。

フェーズ7 — 差分を表示して確認
  1. git -C ~/ai_projects/claude-skills-site diff を実行して、すべての変更を表示します。
  2. 差分をユーザーに提示します。
  3. 「これらの変更を公開しますか?claude-skills-site にコミットしてプッシュします。」と尋ねます。確認を待ちます。
フェーズ8 — コミットとプッシュ
  1. 変更したファイルをステージングします(デフォルトで生成されたヒーロー画像も含めます)。
    git -C ~/ai_projects/claude-skills-site add \
      src/content/skills/<skill-name>.mdx \
      src/content/bundles/<bundle>.mdx \
      public/images/<skill-name>-hero.jpg   # omit only if --no-image / no image was produced
    
  2. メッセージ feat: add <skill-name> skill to site でコミットします。
    • --update の場合:feat: update <skill-name> skill on site
  3. プッシュします:git -C ~/ai_projects/claude-skills-site push
  4. コミットハッシュを報告し、成功したことを確認します。

エラーからの復旧

エラー復旧方法
SKILL.md が見つからない両方のパスを確認し、試したパスを報告します
バンドルの .mdx が見つからない利用可能なバンドルを一覧表示し、ユーザーに選択を依頼します
.mdx がすでに存在する(--update なし)上書きするか、--update を指定するか、ユーザーに確認します
Git のプッシュに失敗エラーを表示し、先に git pull --rebase を実行するよう提案します
accent_color が無効デフォルトの amber に設定し、ユーザーに警告します
スキルがすでにバンドル配列に含まれているバンドルの更新をスキップします。エラーではありません

MDX テンプレート

---
name: "<skill-name>"
tagline: "<tagline>"
apothecary_name: "<apothecary_name>"
bundle: <bundle>
tags: [<tags>]
accent_color: <color>
# hero_image:
auto_description: "<description>"
auto_triggers: [<triggers>]
auto_tools: []
auto_last_synced: "<date>"
auto_last_commit: "<date>"
auto_activity: []
install_command: ""
repo_path: "<skill-name>"
dependencies: [<deps>]
---

## What it does

<body>

## Key features

<features>

## When to use

<when>

コメント