Skip to content

Skill 本文に「対象リポジトリ = ai-plugins 自身」の前提が混入している(cross-review の claude plugin validate を例に) #292

Description

@takemi-ohama

課題

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 にも同種の自リポジトリ前提が潜んでいる可能性がある

依頼したい対応

  1. cross-review の該当箇所を汎用化する — 「claude plugin validate を通す」を
    ハードコードせず、対象リポジトリの検証コマンドを状況から決める形にする
    (例: plugin repo なら claude plugin validate、それ以外はリポジトリの
    標準テスト/lint コマンド。判定できなければ実行した検証内容を結果ファイルへ明記させる)
  2. 全 Skill の横断棚卸し — 「対象リポジトリ = ai-plugins」を暗黙に仮定している
    記述を洗い出す。plugins/ndf/skills/** のうち、ユーザのリポジトリに対して
    動く Skill(cross-review / fix / pr / pr-review / quality-gates / release 等)が対象。
    ※ release skill の plugin パッケージング手順のように、本来 plugin repo 専用の
    記述は対象外。区別して棚卸しする
  3. 再発防止のガイドラインを設ける — Skill 本文に具体的な検証コマンドを書くときは
    「対象リポジトリに存在しない場合どうするか」をセットで書く、という執筆ルールを
    CLAUDE.md / AGENTS.md もしくは Skill 執筆ガイドへ追記する

環境

振り返り: #369 (comment)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpriority: high実害・安全機構の欠落など、優先して対応する

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions