DeepSeek Harness のプラグイン vs スキル:どちらが必要?

プラグインはハーネスにできることを変え、スキルはエージェントの知識を変える。実機スクリーンショット、2つの実例、そして選択を決める3つの質問で両者を並べて解説します。

最終更新: 2026-09-09

DeepSeek Harness にはよく似た2つの拡張仕組み、プラグインとスキルが備わっています。公式サイトのキャッチコピーは "everything is a plugin" なのに、エージェントはリポジトリ内のプレーンな Markdown スキルファイルも素直に読み込みます。この2つを混同すると、強制が必要な場面でスキルを書いたり、Markdown 1枚で足りる場面にプラグインを作ったりすることになります。

このページでは感覚ではなく証拠で両者を切り分けます。掲載するスクリーンショットはすべて実際のセッションから撮ったもので、元動画の該当秒数へ直接リンク。すべての主張はこの2本の動画か、DeepSeek 公式サイトの文章に基づいています。

結論(ひとこと)

スキルは Markdown の指示ファイル(通常は .agents/skills/<name>/SKILL.md)で、コンテキストを補足するものです。エージェントは読んで概ね従いますが、強制はされません。プラグインはリポジトリ外のハーネスプロフィールに組み込まれる Cordis パッケージで、ツールの追加・承認ポリシーの差し替え、さらにはツール呼び出しの実行前拒否までできます。導くならスキル、保証するならプラグイン。

公式の位置づけを並べて比較

DeepSeek の公式ホームページはアーキテクチャを一言で説明しています。"Every capability is a plugin that can be swapped or recomposed: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and the UI." よく読んでください。スキルは「入れ替え可能なもの」のリストの中に現れ、プラグインはそれらすべてを包む単位です。

everything is a plugin の見出しが大きく表示された DeepSeek Harness 公式ホームページ。models、tools、skills から scheduling や UI まで、あらゆる能力が入れ替え・再構成可能だと説明している
公式の位置づけ:スキルは長いリストの中の入れ替え可能な1能力です。元動画の 4:16 から見る

動いているインスタンスでは、プラグインは設定パネルのトグル行として目に入ります。ハーネスそのものがパーツ単位で届き、どの部品も切り替えられるのです。

DeepSeek Harness 設定のプラグインパネル。tool-subagent、spill-local、web などのプラグインが2列のグリッドで並び、それぞれ有効/無効のトグルを持つ
ハーネスそのものがパーツ単位で届きます。すべてトグル付き。元動画の 4:32 から見る
項目プラグインスキル
正体ハーネス本体に能力を注入する Cordis パッケージ。ツール、承認ポリシー、定期タスク、UI さえも。エージェントが読み込む Markdown の指示ファイル(SKILL.md)。追加の文脈と手順を与える。
保存場所リポジトリの外。~/.dsh/profiles/<profile>/node_modules へのシンボリックリンクと、プロフィールの cordis.patch.yml への登録で構成。プロジェクト内の .agents/skills/<name>/SKILL.md。またはグローバルスキルフォルダで、セッションが自動で拾う。
配布方法プラグインディレクトリや GitHub リポジトリ経由。プロフィールにインストールし、次回のハーネス再起動で読み込まれる。ファイルをリポジトリに置くだけ。すぐにセッションのスキルカタログに現れる。
能力の限界強制できる。プラグインの hook はツール呼び出しを実行前に拒否できる(同期の ctx.tools.guard() API)。助言のみ。エージェントは概ね手順に従うが、従わせる仕組みは何もない。
向いている用途ハーネスにできることを変える:新しいツール、ガードレール、承認フロー、スケジューリング。繰り返す作業のやり方をエージェントに教える:コミットの作法、SOP、チェックリスト。

迷ったら、3つの質問

1

保証される必要があるか、それとも概ねで十分か?

手順を1つ飛ばすだけで事故になる(本番データベース、破壊的な git 操作)なら強制が必要です。プラグインの hook、あるいは決定論的なスクリプトを実行するステップを持つスキル。スタイルや手順の話(コミットメッセージ、spec のワークフロー)ならスキルで足ります。

2

リポジトリのものか、マシンのものか?

リポジトリと一緒にチームで共有すべき規約は、コードの隣にコミットするスキルファイルへ。そのマシン固有の能力(直 psql の阻止、スケジューリングツールの追加)は、そのマシンのプロフィールに入れるプラグインへ。

3

英語の説明ファイル1枚で足りるか?

Markdown に書いた数ステップで済むならスキルを書き、エージェントに下書きさせましょう。クラッシュコースの出演者は AI に書かせています。自分で書くより網羅的だからです。実行の保証が必要になった瞬間が upgrade の合図です。ステップをスクリプトにするか、hook プラグインに昇格させる。動画がたどったのはまさにこの経路です。

実例1:commit スキルを作る

Agentic AI クラッシュコースで出演者が必要にしたのは、再利用可能なコミット手順です。全部コミット、きれいなメッセージ、push はしない。1つのプロンプトからスキルが生まれ、そのやり取りは動画でも数分しかかかりません。

  1. 1

    1つのメッセージでスキルを説明する

    プロンプトは commit を担うスキルを要求します。AI のクレジットを残さない、簡潔な箇条書きのメッセージ、コミットすべきでないもののクイックチェック、作業ツリー全体を既定でコミット、push やデプロイは決してしない。

    DeepSeek Harness のチャット入力欄に置かれた、commit スキルを作らせる1段落のプロンプト。作業ツリー全体をコミットし、AI クレジットを残さず、push もデプロイもしないよう指示している
    要求全体がひとつの平文メッセージ。SDK もボイラープレートもありません。元動画の 15:50 から見る
  2. 2

    エージェントがファイルを書き、即座に登録する

    スキルは .agents/skills/<name>/SKILL.md のようなプロジェクトルートから発見されます。新しい commit スキルはセッションのスキルカタログに即座に現れます。入力欄のスラッシュメニューを見れば、エージェントが呼び出せるスキルが一覧できます。

    DeepSeek Harness のチャットで、name・description・whenToUse の frontmatter を持つ .agents/skills/commit/SKILL.md が書き出され、commit スキルがセッションのスキルカタログに即座に現れたことを確認する様子
    .agents/skills/commit/SKILL.md として保存され、その場でセッションカタログに登場。元動画の 17:00 から見る
    DeepSeek Harness の入力欄に開いたスラッシュコマンドメニュー。find-skills や cordis-plugin-development などインストール済みスキルが1行説明付きで並んでいる
    スラッシュを打てば、エージェントが呼び出せるスキルがすべて出てきます。元動画の 10:55 から見る
  3. 3

    Markdown として読む:frontmatter、ステップ、ルール

    生成されたファイルには frontmatter(name、description、whenToUse)があり、git status から verify までの6ステップと、クレジット禁止や push 禁止のルールが並びます。ただのファイルなので、いつでも手で編集できます。

    生成された commit SKILL.md を VS Code でプレビューした画面。git status から verify までの6ステップと、クレジット禁止・push 禁止などのルールが表示されている
    スキルはただの Markdown です。frontmatter、番号付きステップ、ルール。元動画の 18:00 から見る
    check-invoices スキルの SKILL.md を示すアニメーション図。name と description の見出しに続き、請求書検証の4ステップが並び、最初のステップにチェックマークが付いている
    2本目の動画が同じ構造をアニメで示します。まず説明、次にステップ。元動画の 10:45 から見る
  4. 4

    曖昧なステップを決定論的なスクリプトへ

    「クイック sanity チェック」はモデルの判断だったので、出演者は agent に scripts/check-commit-safety.sh への変換させます。終了コードは 0 が安全、1 が検知、2 が環境エラー。その場で実測され、仕込んだ .env ファイルは deny パターンで検知。同じ git 状態なら、常に同じ判定を返します。

    DeepSeek Harness のチャットに表示された check-commit-safety.sh の実測テーブル。きれいなツリーは終了コード 0、仕込んだ .env ファイルは deny パターンで検知されている
    曖昧なステップがスクリプトになりました。0 は安全、1 は検知、2 は環境エラー。元動画の 19:30 から見る

実例2:git-protect プラグインを作る

同じ動画の後半で、リポジトリには破壊的な git コマンドが絶対に実行されないという保証が要ります。誘導では足りない。エージェントが最終的に作ったのはプラグインで、その過程は比較表のプラグインの特徴をすべて体験するものです。

  1. 5

    hook を依頼し、ワークスペース外の書き込みを承認する

    エージェントは正しい拡張点を見つけます。ツールレジストリは ctx.tools.guard() という、ツール呼び出しを実行前に拒否できる同期 hook の API を公開しています。配線にはワークスペース外への書き込みが要るため、画面には承認ダイアログが表示されます。

    DeepSeek Harness の承認ダイアログ。git-protect hook をワークスペース外のユーザーの .dsh プロフィールディレクトリへ配線するため、サンドボックス権限の引き上げを求めている
    プラグインはリポジトリの外に置かれます。書き込む前に agent が許可を求めます。元動画の 24:30 から見る
  2. 6

    何が作られたか:contract とプロフィール配線と再起動

    出来上がるのは本物のコードです。.agents/git-protect/hook/index.mjs に Cordis contract(name、inject: ['tools']、apply)を持たせ、~/.dsh/profiles/node_modules へシンボリックリンクし、cordis.patch.yml で登録。画面の注意書きによると、web プロフィールは HMR が無効のため、プラグインは次回のハーネス再起動で有効になります。

    DeepSeek Harness のチャットに git-protect プラグインが作成したものが列挙された画面。Cordis contract の index.mjs、~/.dsh/profiles/node_modules へのシンボリックリンク、再起動で有効になるという注意書き
    プラグインは contract を持つ本物のコードであり、読み込みには再起動が要ります。元動画の 25:00 から見る
  3. 7

    強制力を証明する

    再起動後、git reset --hard も git branch -D の探りもブロックされます。拒否はシェルではなく hook からのもの。一方で git status、git log、git diff は通常通り通り抜け、コミット待ちの spec.md の変更は無傷のままでした。

    DeepSeek Harness の検証テーブル。git reset --hard と git branch -D は git-protect hook にブロックされ、git status・git log・git diff は通常通り通過している
    破壊的なコマンドはハーネス層で拒否されます。礼儀ではなく。元動画の 26:30 から見る

2つはどう協力するか

この2つの仕組みは競合ではなく、層です。動画の中の同じリポジトリには最終的に両方が入ります。commit スキルが毎回のコミットをきれいに保ち、git-protect プラグインは会話で何を言おうと、破壊的なコマンドがハーネス層で拒否されることを保証します。

逆方向もあります。プラグインの作り方をエージェントに教えるスキルが存在します。入門向けの動画では、creator mode で新しいプラグインを組み立てる際に cordis-plugin-development スキルが読み込まれます。アーキテクチャが依存するプラグインを、スキルが生み出す構図です。

The full guardrail stack is now active: the harness hook (tool-level deny), the commit skill (safety check → ignore resolution → clean local commits), and AGENTS.md policy.

クラッシュコース動画の約 26:30 に表示された要約より

よくある質問

このページに寄せられる質問に、動画と公式の文章からお答えします。

DeepSeek Harness のスキルファイルはどこに置く?

プロジェクトのスキルはリポジトリルートの .agents/skills/<name>/SKILL.md です。動画のエージェントはこれを project-scoped で自動発見されると説明しています。グローバルスキルも対応しています。2本目の動画では、既存の Claude Code 環境にあったグローバルスキルが自動的に取り込まれました。

スキルはツールやコマンドを実行できる?

スキルそのものは指示のみです。既定ではエージェントが読んで手順を解釈します。予測可能な結果が欲しいなら、クラッシュコースのやり方に倣い、スクリプト(check-commit-safety.sh)を添付してそのステップに実行させるか、チェックを hook として束ねて提案から強制へ変えます。

プラグインにできてスキルにできないことは?

ハーネスそのものを変えることです。プラグインはツールの注入、ツール呼び出しの実行前拒否、承認ポリシーの差し替え、定期タスクのような追加ができます。ワークスペース外のプロフィールに配線され、再起動で読み込まれます。スキルは会話にコンテキストを足せるだけです。

プラグインとスキルについて、公式の文言は?

ホームページにはこうあります。"Every capability is a plugin that can be swapped or recomposed: models, tools, skills, sessions, sandboxes, storage, loops, scheduling, and the UI." つまりスキルはリストの中の1つの能力であり、プラグインはスキルを含むすべての出荷単位だ、ということです。

Claude Code から移行しますが、スキルはそのまま使える?

ほぼ使えます。スキルはプレーンな Markdown だからです。クラッシュコースは、リポジトリにローカルスキルが既にあればハーネスが読めるはずだと述べ、2本目の動画では Claude Code のグローバルスキルが自動取り込みされました。例外はプラグインで、Cordis 固有のため DeepSeek Harness 向けに作り直すかインストールが必要です。

プラグインがすぐ有効にならないのはなぜ?

web プロフィールは HMR が無効のため、新しく配線されたプラグインは次回のハーネス再起動で有効になります(動画の注意書きの通り)。確認するには、プラグインがブロックすべきコマンドを agent に実行させます。シェルの結果ではなく hook による拒否が返ってくるはずです。

関連ガイド

どちらを使うか決めたら、次はこちら。

出典とクレジット

このページのスクリーンショットはすべてこの2本の動画から撮ったもので、各画像は撮影した正確な秒数へ深リンクします。上の解説文は当サイト独自のものです。

DSH Plugins は DeepSeek Harness プラグインの独立したコミュニティ ディレクトリです。DeepSeek との提携・公認はありません。サードパーティ製プラグインはセキュリティ監査を受けていません。インストール前にソースコードをご確認ください。

DeepSeek Harnessの新着プラグインを毎週お届け。スパムはありません。