課題
ndf plugin の Skill は 任意のリポジトリに対して実行される。しかし一部の記述が
「対象リポジトリ = ai-plugins 自身(Claude Code plugin repo)」であることを前提に
書かれており、それ以外のリポジトリで実行するとサブエージェントが実行不可能な
コマンドを指示される。
個別の 1 箇所の修正ではなく、「自リポジトリ前提が Skill 本文に混入している」
という構造自体を課題として起票する。
発見の経緯(具体例)
devbasex/devbase(Claude Code plugin ではない Python プロジェクト)で
/ndf:cross-review 150 を実行したところ、Step 7.5 の最終スイープを担当した
サブエージェントが claude plugin validate を実行しようとして失敗した。
該当箇所:
plugins/ndf/skills/cross-review/docs/02-fix-and-rotation.md:362
> 修正で push した場合は `claude plugin validate` を通すこと。
このコマンドは .claude-plugin/plugin.json / marketplace.json を持つ
plugin repo でしか成立しない。devbase 側にはそれらが存在せず(devbase の
「プラグイン」は Claude Code plugin ではなく devbase 独自のプロジェクト
プラグイン機構)、サブエージェントは代替として全テストスイートを通すという
自己判断でリカバリした。
今回は幸い「実行できないので代替ゲートを通す」と判断できたが、
指示された品質ゲートが対象リポジトリに存在しないこと自体が異常系であり、
サブエージェントの裁量に委ねるべきではない。
問題の性質
| 観点 |
内容 |
| 影響 |
plugin repo 以外で cross-review を回すと、最終スイープの品質ゲートが不定になる |
| 検知しにくさ |
サブエージェントが黙って代替判断すると成功報告に紛れる。今回はメインへの補足報告で気づいた |
| 範囲 |
cross-review に限らず、他 Skill にも同種の自リポジトリ前提が潜んでいる可能性がある |
依頼したい対応
- cross-review の該当箇所を汎用化する — 「
claude plugin validate を通す」を
ハードコードせず、対象リポジトリの検証コマンドを状況から決める形にする
(例: plugin repo なら claude plugin validate、それ以外はリポジトリの
標準テスト/lint コマンド。判定できなければ実行した検証内容を結果ファイルへ明記させる)
- 全 Skill の横断棚卸し — 「対象リポジトリ = ai-plugins」を暗黙に仮定している
記述を洗い出す。plugins/ndf/skills/** のうち、ユーザのリポジトリに対して
動く Skill(cross-review / fix / pr / pr-review / quality-gates / release 等)が対象。
※ release skill の plugin パッケージング手順のように、本来 plugin repo 専用の
記述は対象外。区別して棚卸しする
- 再発防止のガイドラインを設ける — Skill 本文に具体的な検証コマンドを書くときは
「対象リポジトリに存在しない場合どうするか」をセットで書く、という執筆ルールを
CLAUDE.md / AGENTS.md もしくは Skill 執筆ガイドへ追記する
環境
振り返り: #369 (comment)
課題
ndf plugin の Skill は 任意のリポジトリに対して実行される。しかし一部の記述が
「対象リポジトリ = ai-plugins 自身(Claude Code plugin repo)」であることを前提に
書かれており、それ以外のリポジトリで実行するとサブエージェントが実行不可能な
コマンドを指示される。
個別の 1 箇所の修正ではなく、「自リポジトリ前提が Skill 本文に混入している」
という構造自体を課題として起票する。
発見の経緯(具体例)
devbasex/devbase(Claude Code plugin ではない Python プロジェクト)で/ndf:cross-review 150を実行したところ、Step 7.5 の最終スイープを担当したサブエージェントが
claude plugin validateを実行しようとして失敗した。該当箇所:
plugins/ndf/skills/cross-review/docs/02-fix-and-rotation.md:362このコマンドは
.claude-plugin/plugin.json/marketplace.jsonを持つplugin repo でしか成立しない。devbase 側にはそれらが存在せず(devbase の
「プラグイン」は Claude Code plugin ではなく devbase 独自のプロジェクト
プラグイン機構)、サブエージェントは代替として全テストスイートを通すという
自己判断でリカバリした。
今回は幸い「実行できないので代替ゲートを通す」と判断できたが、
指示された品質ゲートが対象リポジトリに存在しないこと自体が異常系であり、
サブエージェントの裁量に委ねるべきではない。
問題の性質
依頼したい対応
claude plugin validateを通す」をハードコードせず、対象リポジトリの検証コマンドを状況から決める形にする
(例: plugin repo なら
claude plugin validate、それ以外はリポジトリの標準テスト/lint コマンド。判定できなければ実行した検証内容を結果ファイルへ明記させる)
記述を洗い出す。
plugins/ndf/skills/**のうち、ユーザのリポジトリに対して動く Skill(cross-review / fix / pr / pr-review / quality-gates / release 等)が対象。
※
releaseskill の plugin パッケージング手順のように、本来 plugin repo 専用の記述は対象外。区別して棚卸しする
「対象リポジトリに存在しない場合どうするか」をセットで書く、という執筆ルールを
CLAUDE.md/AGENTS.mdもしくは Skill 執筆ガイドへ追記する環境
/ndf:cross-review 150devbasex/devbase(Claude Code plugin ではない)振り返り: #369 (comment)