mcpField
Z
zephyr-routing

zephyr-routing

github.com/gkwa生産性059 回インストール1 日前に更新
リポジトリ

zephyr-routing について

zephyr-routing は、複数の内容を含む文書から Zephyr の項目を該当するベイクログへ振り分けるスキルです。明示的な依頼時のみ動作し、ルーティング規則を zephyr スキル本体から分離しています。

主な機能

  1. 01該当項目をベイクログへ振り分け
  2. 02項目の日付からログ先を解決
  3. 03項目の移動またはコピー
  4. 04振り分けた項目の並べ替えと重複排除
  5. 05不足しているログファイルの作成

活用シーン

  1. 01混在する Zephyr 項目をベイクログに整理
  2. 02無関係な内容を残して項目を移動
  3. 03元文書を変更せず項目をコピー

インストール

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

$npx skills add https://github.com/gkwa/volcanicviper --skill zephyr-routing

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

同梱ファイルtile.json

詳細

概要

ルーティングでは、混在したコンテンツを含むドキュメントを受け取り、各 Zephyr エントリーを適切なベイクログに振り分けます。

このスキルは意図的に自己完結型にしてあるため、[[zephyr]] スキルに手を加えずに、別のルーティング実装へ置き換えられます。

ファイル名の解決、重量表記、event_time タグ、パラメーターの優先順位は [[zephyr]] スキルが管理します。ルーティングではそれらのルールを使用しますが、再記載はしません。

ベイクログの命名規則とパラメーターの既定値を確認するため、ルーティングの前に [[zephyr]] スキルを読んでください。

パラメーター

  • mode — move または copy。既定値は move
  • ベイクログのディレクトリ — [[zephyr]] スキルの「パラメーター」セクションに従って解決します

トリガー

明示的に依頼された場合にのみルーティングします。

ベイクログやその他のドキュメントが開かれているというだけで、自動的にルーティングしてはいけません。

「エントリーを随時ルーティングしておいて」のように、セッション単位の継続的な指示が与えられる場合があります。その場合は、そのセッション中に限り指示に従います。

ルーティングをトリガーする依頼:

  • 「このログの Zephyr エントリーをルーティングして」
  • 「ベイクログ 6-10 の Zephyr エントリーを適切なログにルーティングして」
  • 「このファイルから Zephyr 9 のエントリーを移動して」
  • 「このログ内の混在したエントリーを整理して」

ルーティングをトリガーしない依頼(Zephyr エントリーに関係する場合も含む):

  • 「このログのイベント時刻を更新して」— これは [[zephyr]] スキルの担当です
  • 「Zephyr エントリーに event_time タグを追加して」— これは [[zephyr]] スキルの担当です
  • 「Grafana のアノテーションを適用して」— これは [[grafana-bake-annotation]] スキルの担当です
  • 「Grafana のリンクを更新して」— これは [[zephyr-grafana-links]] スキルの担当です
  • その他の目的でベイクログを開いたり読んだりすること

識別

エントリーは、タイムスタンプ見出しと、その下から次の見出しまでの本文で構成されます。

ソースドキュメントのエントリーは H2 に配置され、ベイクログの ## bake log セクション内にすでに記録されているエントリーは H3 に配置されます。

本文に「For Zephyr N」または「For Zephyr N-M」形式のキーが含まれるものが、Zephyr エントリーです。

Zephyr キーのないエントリーには一切触れず、移動も変更もしません。

そのようなエントリーがないことは問題として報告する対象ではありません。該当するエントリーを含まないドキュメントは通常のドキュメントであり、報告すべき問題ではありません。[[zephyr]] スキルの「センチネルがない場合」を参照してください。

解決

各キーは今日の日付ではなく、エントリーのヘッダーの日付を基準に解決します。

ヘッダーの日付以前で、その日番号が一致する最も新しい日付を選びます。

例:「Zephyr 31」が 6 月 1 日のヘッダーの下にある場合、6 月 31 日ではなく 5 月 31 日に解決されます。

[[zephyr]] スキルの「ベイクログの命名規則」に従って、キーをファイル名に解決します。

ターゲットがない場合の作成

解決されたベイクログが存在しない場合は、作成します。

最小限のひな形として、ルーティングしたエントリーを H3 で含む ## bake log セクションだけを作成します。それ以外は追加しません。

レシピのレイアウトは生成しないでください。レシピのひな形作成は、意図的に別の手順として行います。

挿入

ルーティングしたエントリーは、ターゲットの ## bake log セクションの下に配置し、H2 から H3 に下げて、そのセクション内にネストするようにします。セクションと同じ階層に置いてはいけません。

エントリー本文内に小見出しがある場合は、エントリーの子見出しのままになるよう、見出しレベルを 1 つ下げます。

そのセクション内の Zephyr エントリーは、すべて新しい順の逆時系列で並べます。

本文に記載されたイベント時刻で並べます。本文に時刻の記載がない場合は、ヘッダーのタイムスタンプを使います。

重複の排除

まずエントリーを正規化してから(重量表記は [[zephyr]] スキルに従います)、比較します。

ターゲットに同じヘッダータイムスタンプ、同じ Zephyr キー、同じ正規化済み本文を持つエントリーがすでにある場合は、追加をスキップします。

上書きの意味

後のメモが前のメモに取って代わるのは、同じ事実を言い直したり訂正したりしている場合に限ります。

該当する場合は、後のエントリーを残し、前のエントリーを削除します。

タイムスタンプが同じ、またはほぼ同じでも、異なる事実を記録している 2 つのエントリーは両方とも残します。同じ分に記録されていることだけを理由に、上書きと判断してはいけません。

一方が他方に取って代わるか判断できない場合は両方を残し、その組み合わせをユーザーに報告します。

モード:移動またはコピー

移動モード(デフォルト)では、振り分けられた各項目がターゲットに移された後、ソースドキュメントから削除します。

コピーモードでは、ソースドキュメントを変更しません。

空のソースを削除

空であれば削除されるのはソースドキュメントであり、振り分けではありません。

振り分けによってソースが空になることはありますが、それだけが理由ではありません。

チェックはリクエストの最後に一度だけ実行され、ソースから項目を取り除くすべての手順(このスキルが担当しない手順も含む)が完了した後に行われます。

リクエストでは、振り分けと、振り分けられなかった項目を別のドキュメントに移すなどの後続手順が組み合わされることがよくあります。

そうした項目もソースから移されるため、チェックはその手順が完了するまで待ってから確認します。

ドキュメントに見出しも本文もなく、空白文字または末尾の改行しかない場合、そのドキュメントは空です。

次の両方に当てはまる場合、ソースファイルを削除します。

  • モードがコピーではなく移動である
  • リクエストの終了時にドキュメントが空である

どの手順で空になったかは関係なく、このスキルが項目を振り分けたかどうかも関係ありません。

振り分けられた項目がなく、後続手順だけでソースからすべての項目が取り除かれた場合も削除します。

リクエスト開始時点ですでに空だったソースも削除します。

コンテンツが少しでも残っていれば、ファイルを保持します。

Zephyr の項目がすべて振り分けられていても、見出しが1つ、本文の1行、またはフロントマターが残っていれば、ファイルを保持するのに十分です。

書き込み時の正規化

項目をターゲットに移す際に、重み表記のルールを適用します。

[[zephyr]] スキルに従い、個別の焼成アクションを記録する項目に event_time タグを追加します。

コミット

変更した焼成ログはそれぞれコミットし、ファイルごとに1つのコミットを作成します。

ソースドキュメントについて:

  • 変更されたものの削除されなかった場合は、別のコミットとしてコミットします。
  • 削除された場合(移動モードでソースが空の場合)は、削除を別のコミットとしてコミットします。
  • 変更されていない場合(コピーモード)は、スキップします。

コメント