0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

エージェントスキルは「配布元とGitHubのdiff」を取ってから入れる(lark-doc で実演)

0
Posted at

コーディングエージェント用のスキルを入れるとき、配布元が渡してくるファイルと、公開リポジトリにあるファイルが同じものだと確かめていますか。確かめていない人がほとんどだと思います。私たちもそうでした。

今朝、ByteDance の Lark(飛書)ドキュメント操作スキル lark-doc について、その確認を実際にやってみました。結果として、自分たちが 8 月に公開した記事の誤りが 1 つ見つかりました。手順とあわせて共有します。所要時間は 30 秒ほどです。

結論

飛書が自社ドメインから配信している lark-doc の SKILL.md は、MIT ライセンスの GitHub リポジトリ larksuite/cli にある skills/lark-doc/SKILL.mdバイト単位で同一でした。どちらも 4,192 バイト、49 行、SHA-256 は 2786f910370662069b1b52b98508033c84baaf0bd7b0bae177426ece4ceafacc です。いずれも 2026 年 9 月 13 日に取得しました。

30 秒でできる検証手順

curl と shasum だけで足ります。

  1. 配布元から渡されたファイルをハッシュ化する。
curl -sS https://open.feishu.cn/.well-known/skills/lark-doc/SKILL.md | shasum -a 256
# 2786f910370662069b1b52b98508033c84baaf0bd7b0bae177426ece4ceafacc
  1. GitHub API で現在の HEAD の SHA を取る。ブランチ名のまま引用してはいけません。
curl -sS "https://api.github.com/repos/larksuite/cli/commits?per_page=1" | jq -r '.[0].sha'
# 39aaf9fca0e08825b51f6d8c6c617bf781db761b
  1. その SHA を指定して同じパスを取得する。
curl -sS "https://raw.githubusercontent.com/larksuite/cli/39aaf9fca0e08825b51f6d8c6c617bf781db761b/skills/lark-doc/SKILL.md" | shasum -a 256
  1. diff を取る。一致すればコミット固定の permalink で引用できます。一致しない場合は、著者が今なにを書いているかという意味でリポジトリ側が正です。そして差分そのものが調べる価値のある情報になります。

飛ばされがちなのは手順 2 です。main を指した permalink は、誰かがそのファイルを触った次の瞬間から引用行がずれます。しかも、ずれたことは誰も教えてくれません。

ついでにレスポンスヘッダも見ておくとよいです。配布元のエンドポイントには ETag も Last-Modified もありませんでした。つまり、この配信面には固定できるバージョン情報が存在しません。

同じファイルなのに、掲載が 2 つある

lark-doc は 2 つの経路で配布されていて、レジストリは両者を別々に数えています。

ベンダードメイン経由 GitHub 経由
インストールコマンド npx skills add https://open.feishu.cn --skill lark-doc npx skills add https://github.com/larksuite/cli --skill lark-doc
累計インストール数 663,945 439,469
数値の基準日(掲載ページ表記) 2026 年 9 月 12 日 2026 年 9 月 7 日
リポジトリの star 表示 なし 17k

どちらの数値も skills.sh レジストリのもので、2 つのページはいずれも 2026 年 9 月 13 日に読み取りました。差は 224,476、比にするとベンダー経由が GitHub 経由の約 1.5 倍です。

ただし、この 2 つを足してはいけませんSkillselion の Lark Doc スキル紹介ページには、2026 年 9 月 13 日時点で次の注記が表示されています。

This is a copy of lark-doc by larksuite - installs and ranking accrue to the original listing.

観測できるのは、カタログが経路ごとに別レコードを持っていること、レジストリがそれぞれに違う数値を返していることまでです。1 件のインストールがどちらに計上されるかは外からは見えないので、合計値は出しません。

名前空間をまたいだ完全一致の複製は珍しくありません。私たちはエージェントスキルの複製調査レポート(2026 年 8 月 12 日時点で凍結)で 79,848 件の掲載を突き合わせ、3,443 件を複製と判定しました。この複製群が 26,061,541 インストール、全体の 15.8% を占めます。判定基準は SKILL.md がバイト単位で一致すること、つまり今回 lark-doc が満たした条件そのものです。なお、複製由来のインストールのうち 35.0% は、他人のスキルを盗んだものではなく、自分のスキルを複数経路に出している公開元によるものでした。

ファイルの中身は何をしているのか

コミット 39aaf9f 時点で skills/lark-doc/ にあるのは 44 ファイルです。内訳は SKILL.md が 1 つ、リファレンスが 15、references/genres/ 配下の文書ジャンル別テンプレートが 28。SKILL.md 本体は 49 行しかなく、やっていることはほぼルーティングだけです。リポジトリ全体では SKILL.md を持つディレクトリが 28 あり、star は 17,151、fork は 1,381、ライセンスは MIT でした(GitHub API、2026 年 9 月 13 日取得)。

frontmatter は依存関係を散文ではなく機械可読なメタデータとして宣言しています。

metadata:
  requires:
    bins: ["lark-cli"]
    skills: ["lark-shared"]

出典: skills/lark-doc/SKILL.md, frontmatter, commit 39aaf9f, 2026 年 9 月 13 日取得

バイナリ 1 つと兄弟スキル 1 つ。インストーラがディスクに何か書く前に検証できる形です。README の途中に「事前に X を入れておいてください」と書いてあるだけ、という状態とは違います。

本文の最初の指示はドキュメント操作の話ではなく、コンテキスト消費の話です。

**CRITICAL:先判断场景,再读取该场景的参考文件;不要在任务开始时一次性读取全部参考文件。每个文件只在首次进入对应阶段时读取一次。**

出典: skills/lark-doc/SKILL.md, "场景与 Shortcut 路由", commit 39aaf9f, 2026 年 9 月 13 日取得

訳すと「CRITICAL: まずシナリオを判断し、そのシナリオの参照ファイルだけを読むこと。タスク開始時に参照ファイルを一度に全部読んではいけない。各ファイルは対応する段階に最初に入ったときに一度だけ読む」。49 行のルータの背後に 43 個の参照ファイルがぶら下がっている構成なので、この 1 行が設計そのものです。

ファイル中で一番いい行は、ゼロから文書を作るときのルーティング項目にあります。

- **从零创作 — [`创建工作流`](references/lark-doc-create-workflow.md)**:先完整执行创建工作流,**简单任务不是跳过的理由**;

出典: skills/lark-doc/SKILL.md, "文档内容", commit 39aaf9f, 2026 年 9 月 13 日取得

「簡単なタスクであることは、手順を飛ばしてよい理由にならない」。エージェントが「これくらい簡単だから」と判断して壊れた成果物を出すところを、書いた人は見たのだと思います。

認証の扱いも面白くて、多くのスキルとは逆向きです。共有認証スキルを事前に読み込まず、auth status --verify も事前実行しない。未認証・トークン・ID・スコープのいずれかでエラーが出たときに初めてそのスキルを読み、直してリトライする。大半のスキルは毎回の認証チェックのコストを払い続けますが、これは失敗したときだけ払います。

8 月の記事から 1 行だけ変わっていた

私たちの解説記事は 2026 年 8 月 20 日時点で引用を検証しています。その直前の変更である 525a98270f80693bdaf3c0a6006e9f3f94820851(2026 年 8 月 14 日)と現在の HEAD を diff すると、変更されているのは 19 行目の 1 行だけでした。ローカルファイルのパス解決ルールです。

@path 参照をカレントディレクトリ基準にすると述べた 1 文が、探索順序、XML ソースファイルのディレクトリへのフォールバック、そしてフォールバックを行わない入力(インライン内容、stdin、オンライン文書)の明示まで含む 4 節構成に書き換わっていました。この変更が入ったのはコミット 9a29abea、2026 年 9 月 9 日です。ファイルサイズは 4,009 バイトから 4,192 バイトになり、行数は 49 行のままでした。

このルールからは、行間を推測するまでもなく 2 点が読み取れます。ローカル参照の範囲が CWD 基準の相対パスだけから、ディスク上の任意の絶対パスまで広がったこと。そして同名ファイルが衝突したときは、作業ディレクトリ側が黙って優先されることです。

こちらのカタログ側のコピーは、いまも古いほうの行を表示しています(2026 年 9 月 13 日に掲載ページを読んで確認)。4 日遅れです。引用の前に必ず上流を取り直す、というルールを持っているのはこのためで、今日の自分たちのミスもそのルールが見つけました。

訂正

8 月の記事には「このスキルには公開リポジトリがない」「固定できるコミット履歴がない」と書いてあります。どちらも誤りでした。skills/lark-doc/SKILL.md は 2026 年 3 月 28 日から公開リポジトリに存在します。lark-cli を Lark / 飛書 の公式 CLI として OSS 化したコミットで、以後このファイル 1 つに 40 件のコミットが入っています。

原因は平凡です。配布元の .well-known エンドポイントを見てバージョン情報がないことを確認し、そこで探すのをやめました。ファイル中の特徴的な 1 行で GitHub を検索していれば 30 秒で見つかったはずです。記事の引用自体は今も有効ですが、出典の注記は誤りなので、こうして訂正します。一覧はディープダイブ記事の一覧ページにあります。

入れるべきか

チームのドキュメントが Lark や飛書にあるなら入れる価値があります。ただし、このスキル単体ではなくスイートで入れてください。lark-doc はファイル単位の操作とコメントを意図的に扱わず、そこは Lark Drive スキルの紹介ページにあるスキルの担当です。表計算と Base のデータ操作も範囲外です。

なお、導入前にひとつ。GitHub 経由の掲載ページには、skills.sh の監査結果として「セキュリティ監査: 3 つのスキャナのうち 2 つが通過」と表示されています(2026 年 9 月 13 日に確認)。それ自体が危険信号というわけではありませんが、本番環境に入れる前にそのページの Security Audits パネルに目を通してください。

Lark を使っていないなら不要です。CLI バイナリからルーティング対象の URL 形式まで、すべて ByteDance のエコシステム前提で書かれています。

どちらにせよ、入れるなら GitHub 経由を選ぶのが無難です。中身は同じで、以後の変更を diff で追えます。用語そのものが初見ならエージェントスキルの用語解説ページに平易な定義を置いてあります。リポジトリ、star 数、セキュリティ監査の結果は larksuite/cli 版 Lark Doc の紹介ページで確認できます。

次にスキルを入れるとき、上の 4 コマンドを試してみてください。30 秒で終わりますし、「誰にも検証できないファイルを引用してしまう」状態を防げるのはこれだけです。

検証環境: larksuite/cli のコミット 39aaf9fca0e08825b51f6d8c6c617bf781db761b、および配布元の SKILL.md(いずれも 2026 年 9 月 13 日取得)。インストール数は各掲載ページが表示している基準日つきの数値です。中国語からの訳は私たちによるものです。Skillselion は独立したディレクトリであり、ByteDance、Lark、Anthropic、OpenAI、Cursor とは提携関係にありません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?