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?

セキュリティ層がCRITICALに昇格した日、ルールは1本も増えていなかった。SupabaseのPostgresスキルをコミットで追う

0
Last updated at Posted at 2026-09-06

エージェント向けの知識スキルには、たいてい優先度表が載っています。8段階、CRITICALからLOWまで、層ごとに接頭辞。中身の地図に見えます。

supabase/agent-skills のPostgresスキルをコミット単位で追うと、そうではないことがはっきりします。2026年1月16日の初版では、Security & RLS は5位、MEDIUM-HIGHでした。その6日後、2本のコミットで3位、CRITICALに上がります。

0ffac72  2026-01-22T08:20:54Z  bump security and RLS to critical
a1fbd23  2026-01-22T08:32:12Z  turn rls basics critical

どちらのコミットもセキュリティのルールファイルを追加していません。その日、セキュリティ系は3本でした。7か月半たった今日も3本です(全体は30本から31本に増え、増えた1本はスキーマ設計側)。ラベルは2ランクと1段階ぶん動き、その裏の分量は1本も動いていません。

不正の話ではないし、スキル自体は良いものです。言いたいのは、層のラベルを分量の代わりに読んではいけないということ、そしてその代わりに使える確認が3つある、ということです。

なお、私はエージェントスキルをインストール数で並べたディレクトリ Skillselion を運営していて、以下は Supabase Postgres Best Practicesの詳細解説 を書くために原文とコミット履歴を読んだときの記録です。

確認1: 層の数ではなく、referencesの数を数えているか

supabase-postgres-best-practices は386,740インストール(skills.shレジストリ、2026年9月5日時点)。表は8カテゴリをうたいます。references/ の実体はルール31本と補助3本で、内訳はこうです。

接頭辞 ファイル数 表の優先度
schema- 6 4位 HIGH
query- 5 1位 CRITICAL
conn- 4 2位 CRITICAL
data- 4 6位 MEDIUM
lock- 4 5位 MEDIUM-HIGH
monitor- 3 7位 LOW-MEDIUM
security- 3 3位 CRITICAL
advanced- 2 8位 LOW

出典: GitHub上の skills/supabase-postgres-best-practices/references の一覧、2026年9月6日に取得

セキュリティは宣言では3位、実体では7位。これより薄いのは最下位のLOW層だけで、格下のスキーマ設計が倍の分量を持っています。

さらに3本を開くと、各ルールのfrontmatterには個別の impact: 行があり、CRITICAL層の3本はこう名乗っていました。

ファイル 自称する impact:
security-rls-basics.md CRITICAL
security-rls-performance.md HIGH
security-privileges.md MEDIUM

出典: references/security-*.md 3本のfrontmatter、2026年9月6日に取得

CRITICAL層の3分の2が、自分をCRITICALだとは名乗っていません。表の層ラベルはファイル内で最も目立つ表示であり、同時に最も解像度の低い表示です。

ただし、薄いことと質が低いことは別です。security-rls-basics.md は失敗をSQLでそのまま見せます。

-- Relying only on application to filter
select * from orders where user_id = $current_user_id;

-- Bug or bypass means all data is exposed!
select * from orders;  -- Returns ALL orders

出典: references/security-rls-basics.md の「Incorrect (application-level filtering only)」ブロック

security-privileges.mdgrant all privileges on all tables in schema public to app_user-- Any SQL injection becomes catastrophic と注記しています。読む価値のある15分。ただし3本です。

確認2: メタデータとCHANGELOGは一致しているか

frontmatterは今日時点でこうです。

version: "1.1.1"
date: January 2026

出典: SKILL.md の frontmatter、2026年9月6日に取得

同じディレクトリのCHANGELOGの最新エントリは 1.6.0、日付は 2026-07-30。マイナー5版、約6か月のずれです。1月の日付は作成時のスタンプで、その後更新されていません。

単体では無害ですが、再取得の判断にバージョン文字列を使う仕組みを組んでいるなら無害ではありません。この値は半年間ずれたままで、しかもエラーにはなりません。自分について報告するファイルは、自分が古いことを報告できないからです。

確認3: ルールは壊れた例から始まっているか

このバンドルの全ルールファイルは、必ず誤りから始まります。これは私が推測した傾向ではなく、references/_contributing.md に方針として明記されています。

Always show the problematic pattern first, then the solution. This trains agents to recognize anti-patterns.

出典: references/_contributing.md の「Error-First Structure」、2026年9月6日に取得

ここがこのバンドルで最良の部分で、知識スキルを選ぶときの要求条件にしていい項目だと思います。他人が書いた既存スキーマをレビューさせるなら、正しい形だけを見せても足りません。ラベル付きのアンチパターンを、正解の隣で見せる必要がある。正解しか載っていないルールは、書くことは教えても、直すことは教えません。

この表の形式はどこから来たのか

層ラベルがベンダーをまたいでここまで揃っている理由でもあるので触れておくと、この形式はSupabase発ではありません。先にコミットしたのはVercelです。

Supabaseの冒頭文:

Comprehensive performance optimization guide for Postgres, maintained by Supabase. Contains rules across 8 categories, prioritized by impact to guide automated query optimization and schema design.

出典: supabase/agent-skillsskills/supabase-postgres-best-practices/SKILL.md、2026年9月6日に取得

Vercelの react-best-practices:

Comprehensive performance optimization guide for React and Next.js applications, maintained by Vercel. Contains 70 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.

出典: vercel-labs/agent-skillsskills/react-best-practices/SKILL.md、2026年9月6日に取得

完全に一致する最長の連続は9語、across 8 categories, prioritized by impact to guide automated です。9語だけなら偶然でありえます。見出し3本がバイト単位で一致し(## When to Apply## Rule Categories by Priority## How to Use)、導入句2つも一致し(Reference these guidelines when:Each rule file contains:)、優先度表のヘッダー行が同一でちょうど8行、最下層の接頭辞も同じ advanced-、となると偶然では説明が付きません。

ファイル 最初のコミット
vercel-labs/agent-skills の react SKILL.md 2026-01-14 02:35Z
supabase/agent-skills の postgres SKILL.md 2026-01-16 02:52Z

差は2日です。ここは自分で確認するときに注意が要ります。Supabase側のファイルは postgresql-best-practicespostgres-best-practicessupabase-postgres-best-practices と2回リネームされていて、GitHubのパス単位の履歴は初回コミットを1月26日と表示します(それを信じると差は12日になります)。リポジトリ最初のコミットのツリーを直接見ると、冒頭文も見出し3本も8行の表も、1月16日のバージョン 0.1.0 の時点ですでに揃っています。

両リポジトリのREADME、CONTRIBUTING、AGENTS、CLAUDEを読みましたが、互いへの言及はありません。どちらのSKILL.mdもfrontmatterで license: MIT を宣言しています(LICENSEファイルを同梱しているのはSupabase側だけ)。

つまり、ベンダー製の知識スキルには既に定型があります。薄いインデックス、深い個別ルールファイル、優先度の層、そして各ルール内の誤り先出し。定型が広まったということは、形式そのものはもう品質のシグナルにならないということで、だから上の3つの確認が必要になります。

Vercel側は同じ考え方をより完全に作り込んでいて、rules/ に実際に70本のルールファイルとビルドパイプラインが入っています。中身は Vercel React Best Practicesスキルの詳細 にまとめています。

手元のデータベース系スキルに3つの確認を当てる

referencesを数えるのは1分で終わり、インストール数の並びより早く用途に合う1本が決まります。次に当てるなら Prisma PostgresスキルPrisma Database SetupスキルPrisma Client APIスキル あたりが分かりやすいと思います。Postgres以外だと Azure KustoスキルLark Baseスキル が同じ バックエンドとデータのカテゴリ にあります。

データベース以外にも効きますし、面白いのは「知識をどこに置くか」への答えが違う例です。Web Design Guidelinesスキル は薄いインデックスの下に何も無い極端な型。Agent Browserスキル はスタブだけを配って本体の指示をランタイムにCLIから取得する型で、バージョンが一致するので陳腐化しません。shadcnスキル はモデルの記憶ではなくCLIから実プロジェクト設定を読む型です。

結局インストールすべきか

本番に届くSQLをエージェントが書くなら、Supabaseかどうかに関係なく入れる価値があります。frontmatterは「Postgres running anywhere」と明記していて、ルール自体は標準的なPostgresです。優先度の並びは妥当で、誤り先出しの書式は知識スキルの教え方として現時点で最良だと思いますし、セキュリティ3本は単体で読む価値があります。自分たちで持っていないウェアハウスへの読み取り専用の分析だけなら不要です。深さの期待値は、インストール後ではなく前に調整しておくのが良いと思います。8段階と聞くと網羅的に見えますが、届くのは31本です。

npx skills add https://github.com/supabase/agent-skills --skill supabase-postgres-best-practices

FAQ

SupabaseはVercelのスキルを写したのですか。
見出し3本と導入句2つがバイト単位で一致し、冒頭文に9語の完全一致があり、優先度表の形も同じで、Vercel側のコミットが2日早い、というのが確認できる事実です。互いへの言及はなく、どちらもfrontmatterで license: MIT を宣言しているので、この再利用は許諾の範囲内です。コミット日は方向を記録していますが、意図はどこにも記録されていません。

Supabase専用ですか。
いいえ。frontmatterは "Postgres best practices maintained by Supabase, for Postgres running anywhere" と範囲を書いています。インデックス、コネクション、RLS、ロック、スキーマ設計はいずれも標準的なPostgresの話です。プラットフォーム差があるところだけ、個別ルールにSupabase固有の注記が入ります。

8カテゴリと書いてありますが、実際のルール数は。
references/ にルール31本と補助3本です。内訳はスキーマ6、クエリ5、コネクション4、データ4、ロック4、モニタリング3、セキュリティ3、アドバンスト2。8という数字は優先度の段数であって、分量ではありません。

もっと詳しい比較はどこにありますか。
行単位の読解は Supabase Postgres Best Practicesの詳細解説 に、他のスキルの解説は 詳細解説シリーズの一覧 にあります。ベンダーが自前のスキルを出す流れ全体は ベンダー製スキルはコミュニティ製を置き換えるのか に書いています。

最終更新: 2026年9月6日。インストール数は skills.sh レジストリの2026年9月5日時点の値、ファイルの引用・コミットハッシュと日付・references/ の一覧は2026年9月6日にGitHubから取得しました。

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?