Communitygithub.com

Ali-Fani/django-unfold-skills

django-unfold向けエージェントスキルスイート:ModelAdmin、アクション、フィルター、タブ、コンポーネント、ダッシュボード、テーマ、セキュリティ、本番パターンを網羅する22のエキスパートスキル

django-unfold-skills とは?

このスキルスイートは、django-unfoldライブラリ(Django管理画面のリスタイリング・拡張レイヤー)を活用するための包括的なAIエージェントガイドです。Unfoldが標準の`django.contrib.admin`を置き換えるのではなく、Tailwindテンプレートと設定辞書、オプション機能(アクション、フィルター、タブ、コンポーネント、コマンドパレット)で拡張するものであるという正しいメンタルモデルを確立します。各機能が属するレイヤー(Django標準、Unfold公式、カスタム、Unfold Studio)を明確に分類し、設定だけで十分なケースとカスタム実装が必要なケースを区別するためのルーティングテーブルを提供します。また、すべての管理クラスでUnfoldのベースクラスを継承する必要性、`INSTALLED_APPS`の順序、バージョン確認済みの事実(例:Python≥3.12、Django≥5.2、Tailwind v4)などのゴールデンルールを提示します。このスキルを使用することで、エージェントはUnfoldの設定を誤ったり、Djangoの仕組みと闘ったりすることなく、適切な手段で目的の機能を実現できます。

対応~Claude Code~Codex CLI~Cursor
npx skills add Ali-Fani/django-unfold-skills

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Verified against: django-unfold 0.104.1 Docs: https://unfoldadmin.com/docs/ , https://github.com/unfoldadmin/django-unfold Dependencies: none. Related: unfold-installation, unfold-modeladmin, unfold-settings, unfold-navigation.

Unfold Core — メンタルモデルとルーティング

目的

Unfold作業のための正しいメンタルモデルを確立します。Unfoldは django.contrib.admin の上に重なるリスタイリング&拡張レイヤー であり、置き換えではありません。Unfoldが行うことはほぼすべて、新しいテンプレート(Tailwind)、設定辞書、および追加のオプトイン機能(アクション、フィルター、タブ、コンポーネント、コマンドパレット)を備えたDjango管理画面です。

以下のレイヤリングルールを内面化したエージェントは、機能を誤って属性付けしたり、Djangoの仕組みと闘ったり、設定をでっち上げたりしません。

レイヤリングルール

すべての機能は、正確に1つのレイヤーに属します。

レイヤーカバーする内容例
[DJANGO]標準の管理機構 — Unfoldは見た目のみ変更list_display, search_fields, fieldsets, inlines, get_queryset()、has_*_permission、アクションドロップダウン、autocomplete_fields、raw_id_fields、リストページネーション
[UNFOLD]公式Unfold追加機能 — 設定辞書、contribアプリ、デコレーター、コンポーネント、ミックスインUNFOLD = {...}、unfold.admin.ModelAdmin、@display、@action、unfold.contrib.filters、UnfoldModelAdminViewMixin、BaseComponent、InfinitePaginator、actions_list/row/detail/submit_line、タブ、コマンドパレット
[CUSTOM]エージェントが記述するプロジェクトレベルのコードtemplates/admin/index.html オーバーライド、Tailwindビルド、フォームを含むカスタムビュー、サービス/クエリセットレイヤー、カスタムコンポーネント
[STUDIO]有料Unfold Studioプラグイン機能ボックスレイアウト、固定ヘッダー、最小限のサイドバー、強制ダークサイドバー、バナー、ネストナビゲーション、ダッシュボードテンプレート。公開API相当については unfold-studio スキルを参照。

ルール:機能はそれを提供する 最下層のレイヤー に属性付けます。プレーンなDjangoでできるなら、プレーンなDjangoを推奨します。

ルーティングテーブル(どのニーズにどのメカニズム)

ユーザーの要望メカニズムスキル
モデルのCRUDModelAdmin(Django)unfold-modeladmin
選択行の一括操作actions(Djangoドロップダウン)またはUnfold actions_listunfold-actions
リストから1行に対する操作actions_rowunfold-actions
詳細ページから1オブジェクトに対する操作actions_detailunfold-actions
変更フォーム上の追加保存モードボタンactions_submit_lineunfold-actions
アクション前の確認ダイアログ@action(dialog={...})unfold-actions
変更リストのフィルター/サイドパネルlist_filter(+ Unfoldフィルタークラス)unfold-filters
変更リストの検索ボックスsearch_fields(Django)unfold-modeladmin
グローバルブランド/タイトル/ロゴUNFOLD 設定unfold-settings
アイコン/バッジ付きサイドバーメニューUNFOLD["SIDEBAR"]unfold-navigation
変更リスト/変更フォーム上部の追加タブUNFOLD["TABS"]unfold-tabs
変更フォーム内のタブfieldsetsの "tab" クラス、インラインの tab = Trueunfold-tabs
非CRUDページ(分析、ウィザード)カスタム管理ビュー(UnfoldModelAdminViewMixin)unfold-custom-pages
カード/チャート付き管理ランディングページDASHBOARD_CALLBACK + templates/admin/index.html オーバーライド、またはカスタムページunfold-dashboard
変更フォームの関連オブジェクトinlines(Django;Unfoldベースクラス)unfold-inlines
変更フォームのフィールドグループ化fieldsets(Django;Unfoldはタブクラスを追加)unfold-modeladmin, unfold-tabs
コンパクトな繰り返しフィールドリストArrayWidgetunfold-fields
リッチテキスト編集WysiwygWidgetunfold-fields
ビジュアルカラー/テーマ変更UNFOLD["COLORS"]、BORDER_RADIUS、THEMEunfold-theming
設定を超えたビジュアル変更Tailwind/テンプレートオーバーライドunfold-tailwind
巨大テーブルの遅いページネーションInfinitePaginatorunfold-performance
cmd+KパレットのモデルデータUNFOLD["COMMAND"]unfold-navigation
変更リスト行の関連レコードテーブル(展開可能)list_sections(TableSection/TemplateSection使用)unfold-modeladmin
変更フォーム上のセカンダリ変更リストchange_form_datasets(BaseDataset)unfold-modeladmin

設定では不十分な場合(カスタム実装が必要):

  • フォーム+POSTを伴うアクションダイアログ以外のもの → カスタムページ(unfold-custom-pages)。
  • コンポーネントよりもリッチなダッシュボード → ダッシュボードテンプレートオーバーライド+Tailwind(unfold-dashboard)。
  • 設定として公開されていない視覚効果 → Tailwind CSSまたはテンプレートオーバーライド(unfold-tailwind、unfold-studio)。
  • 単純な変更を超えるビジネスロジック → サービスレイヤー、ModelAdminメソッドは使わない(unfold-production)。

ゴールデンルール

  1. すべての管理クラスは unfold.admin.ModelAdmin を継承する必要があります(すべてのインラインは unfold.admin.TabularInline/StackedInlineを継承)。そうしないと、ページはスタイルなしでレンダリングされます。サードパーティのModelAdminはUnfoldベースで再登録が必要です。
  2. "unfold" は INSTALLED_APPS で django.contrib.admin の 前に 置きます。Contribアプリ(unfold.contrib.filters、unfold.contrib.forms、unfold.contrib.inlines)はその直後に置きます。
  3. Unfoldは管理URL、テンプレートパス(admin/base_site.html の拡張は動作します)、Djangoの権限機構を置き換えません — 拡張し、闘わないでください。
  4. Unfoldの内部(ドキュメント化されたコンポーネント以外のテンプレート名、プライベートテンプレートタグ)をハードコードしないでください。ドキュメント化された設定/クラスのみを使用します。
  5. ビジネスロジックはModelAdminに置きません。ModelAdminはサービスレイヤー上のHTTP/権限レイヤーです。unfold-production を参照してください。
  6. Unfoldは急速に変化します。予期しない動作が発生した場合は、デバッグを深くする前に docs/version-notes.md と最新のドキュメントを確認してください。

バージョン情報(確認済み)

  • 現在のPyPIリリース:0.104.1(このスイートはこれに対して確認済み)。
  • 要件:Python ≥3.12、Django ≥5.2(requires_dist: django>=5.2)。
  • 0.56.0以降Tailwind v4(v3カスタムスタイルシートが壊れました)。
  • Unfoldはデフォルト管理画面と共存可能。段階的な導入もOK。

関連スキル

セットアップタスクには unfold-installation をロードしてください。その他は上記のテーブルからルーティングされます。

関連スキル