FSWP プラグイン開発者
常時適用(基本): fswp-developer/references/lean-coding.md(少なく書いて、まず再利用)、fswp-developer/references/coding-standards.md(コーディング標準、ドキュメント、i18n、アクセシビリティ)、および fswp-security-engineer(入力、出力、認可)。
承認済みの PRD(fswp-architect が作成)を実行します。プレフィックス、配布ターゲット、機能面、JS 階層はすでに決定済みです。再確認しないでください。各ステップでは、一般的な手順についてはドメインスキルを、詳細な深さ、テンプレート、厳格なルールについてはこのスキルのリファレンスを読み込んでください。優先順位: fswp-developer/references/precedence.md。
既存のプラグインの変更には、代わりに fswp-maintainer を使用してください。構造パターンについてのみ、このスキルを呼び戻します。
レイヤー
1 ブートストラップ plugin-slug.php、uninstall.php、includes/class-plugin.php(ビジネスロジックなし)
2 ライフサイクル アクティベーター / デアクティベーター(アクティベーションフック、dbDelta、アップグレードチェック)
3 ドメイン PRD にリストされているもののみ: CPT、テーブル、REST ルート、cron
4a 管理 UI デフォルトはネイティブ wp-admin。1つの React 画面には @wordpress/components。
アプリライクな管理画面には React SPA + Tailwind + TanStack Query + Zustand のみ
4b 公開 UI Atomic Framework(ユーザー提供)、デフォルトはバニラ JS、Alpine はオプトイン
管理 UI に Atomic Framework や Alpine クラスは使用しません。未使用の機能クラスをスキャフォールドしないでください。
ワークフロー
| ステップ | 実行内容 | ハウスリファレンス | ドメインスキル |
|---|---|---|---|
| 1 スキャフォールド | スラッグ、プレフィックス、クラス名、テキストドメインを導出し、scripts/scaffold_plugin.py --help を先に実行します。--plugin-uri と --author-uri は実際の値がある場合のみ渡します(それ以外の場合は行を削除し、プレースホルダーのドメインは絶対に使用しません)。スキャフォールド直後に fswp-qa-engineer/scripts/run_gate.sh <dir> <min-php> --fix を1回実行します: テンプレートには {{...}} プレースホルダーが含まれており、フォーマッターは置換前に安全にリフローできません。 | architecture.md | なし |
| 2 ブートストラップ + ライフサイクル | ブートストラップがヘッダー、オートロードを宣言し、メインクラスに引き継ぎます | architecture.md | なし |
| 3 セキュリティ | すべてのファイル、すべてのプラグインサイズに対して完全なベースラインを適用 | fswp-security-engineer | fswp-security-engineer |
| 4 ドメイン | CPT、テーブル(dbDelta、スキーマバージョン)、REST、cron | data-cpt.md、rest-cron.md | fswp-api-developer; PRD で必要な場合は fswp-performance-engineer |
| 5 ブロック(PRD にある場合) | カスタムブロック、パターン、インタラクティビティ | なし | fswp-block-developer |
| 6 管理 UI | Settings API、WP_List_Table、Dashicons; チェックリストに従ってのみエスカレーション | admin-ui.md、modern-app-stack.md | なし |
| 7 公開出力 | まずユーザーに現在の Atomic Framework ファイルを尋ねます; コールバック内で条件付きでエンキュー | frontend-output.md | なし |
| 8 i18n + 配布 | すべてのPHPおよびJS文字列; readme; ライセンス; バージョン管理 | i18n-distribution.md | WordPress.org 用に fswp-release-manager |
ステップ8の終了時に停止し、fswp-qa-engineer に引き継ぎます。
アドオン構造
fswp-maintainer がアドオンモードで実行される場合、ここでステップ1~3と8を再利用します。追加のアドオンルール(ホスト検出、Requires Plugins、ロード順序、グレースフルアブセンス)は fswp-maintainer にあります。
標準(すべてのビルド、すべてのイテレーション)
references/standards.md は、バージョン管理/チェンジログの規律、テクノロジースタックの決定、必要なプロジェクトメタデータ(不足している値を決して発明しない)、docs/ 内の機能ごとのドキュメント、コード品質基準、および最小コード規律(決定してから書く順序、根本原因の修正、shortcut: マーカー)を規定します。最初のビルド前および既存プラグインのイテレーション前に必ず読んでください。これは一度限りのセットアップ手順ではありません。
セキュリティ体制
小規模プラグインだからといって決して緩めないでください: すべての特権アクションに対するケイパビリティチェック、すべての状態変更に対するノンス、入力のサニタイズと出力のエスケープ、すべてのクエリに対する $wpdb->prepare()、すべての REST ルートに対する実際の permission_callback、安全なライフサイクル、平文のシークレットなし。完全なルール: fswp-security-engineer。
Alpine 階層
決して推測されません。references/frontend-output.md の5項目チェックリストによってのみ選択され、ユーザーがどのチェックがトリガーされたか、およびバニラの代替案がどのようなものかを明示的に確認した後にのみ選択されます。
Atomic Framework(ユーザー提供、バンドル不可)
これは別途メンテナンスされる製品です。バンドル版は乖離します。ビルドに frontend が含まれる場合は常に、現在の afw-tokens.css、afw-components.css、afw-foundation-logics.js(さらに Alpine 階層が確認された場合のみ alpine.min.js、alpine-loader.js、alpine-components.js)を要求します。スキャフォールドは --foundation-dir を介してそれらをコピーし、見つからない場合はリマインダーで停止します。
依存関係
Atomic Framework(Tier 2 @wordpress/*、Tier 3 スタック)を除くすべての依存関係は、スキャフォールド時に公式レジストリの latest で解決され、その後固定されます: ロックファイルをコミットし、解決されたバージョンを README に記録します。スキャフォールド時の最新版とコミットされたロックファイルにより、WordPress.org の再現可能なソースルールを満たします。例外: ユーザーが指定した互換性の上限。詳細: references/modern-app-stack.md。
成果物
インストール可能な {plugin-slug}.zip(zipルートにプラグインフォルダー)に加えて、実際のインストール手順を含む readme.txt またはプライベートな README.md、および簡単なサマリー(プレフィックスと機能の決定、まだ必要な手動ステップ(API キー、cron 間隔、初期設定など))を提供します。コンパイルされた出力はソースとともに出荷されます(references/modern-app-stack.md)。
バンドル物
scripts/scaffold_plugin.py:--features cpt,db,rest,cron,admin,frontend(任意のサブセット)、--js-tier vanilla|alpine、--admin-tier native|react|app、--distribution wporg|private|both、--plugin-uri、--author-uri、--foundation-dir、--zip。assets/templates/:{{PREFIX}}、{{Prefix}}、{{prefix}}、{{PLUGIN_NAME}}、{{plugin-slug}}プレースホルダーを含むプラグインスケルトン。