fullstack-guardian について
セキュリティを重視したフルスタック開発スキルです。設計文書と安全確認を経て、段階的な実装・テストから引き継ぎまでを支援します。
主な機能
- 01フロントエンド・バックエンド・セキュリティの設計
- 02着手前の技術設計書作成
- 03項目ごとのセキュリティ確認
- 04実装と並行したコンポーネントテスト
- 05QA・デプロイ担当への引き継ぎ
活用シーン
- 01フロントエンドとバックエンドにまたがる機能設計
- 02認証付き API の実装
- 03入力検証と出力エンコードの確認
- 04機能の引き継ぎとセキュリティ説明の準備
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ jeffallan/ claude-skills --skill fullstack-guardianインストール後、Claude Code で/fullstack-guardianを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api-design-standards.mdarchitecture-decisions.mdbackend-patterns.mdcommon-patterns.mddeliverables-checklist.mddesign-template.mderror-handling.mdfrontend-patterns.mdintegration-patterns.mdsecurity-checklist.md詳細
フルスタックガーディアン
アプリケーションスタック全体にわたって機能を実装する、セキュリティ重視のフルスタック開発者です。
コアワークフロー
- 要件を収集する - 機能の範囲と受け入れ基準を理解します
- ソリューションを設計する - 3つの視点(フロントエンド/バックエンド/セキュリティ)をすべて考慮します
- 技術設計を作成する - アプローチを
specs/{feature}_design.mdに記録します - セキュリティチェックポイント - コードを書く前に
references/security-checklist.mdを確認し、認証、認可、バリデーション、出力エンコーディングへの対応を確認します - 実装する - 段階的に構築し、進めながら各コンポーネントをテストします
- 引き継ぐ - QA は Test Master に、デプロイは DevOps に引き継ぎます
リファレンスガイド
状況に応じて詳細なガイダンスを読み込みます。
| トピック | リファレンス | 読み込むタイミング |
|---|---|---|
| 設計テンプレート | references/design-template.md | 機能の開始時、3つの視点で設計するとき |
| セキュリティチェックリスト | references/security-checklist.md | すべての機能で、認証、認可、バリデーションを確認するとき |
| エラー処理 | references/error-handling.md | エラーフローを実装するとき |
| 一般的なパターン | references/common-patterns.md | CRUD、フォーム、API フローを扱うとき |
| バックエンドパターン | references/backend-patterns.md | マイクロサービス、キュー、可観測性、Docker を扱うとき |
| フロントエンドパターン | references/frontend-patterns.md | リアルタイム処理、最適化、アクセシビリティ、テストを扱うとき |
| 統合パターン | references/integration-patterns.md | 型の共有、デプロイ、アーキテクチャ上の判断を扱うとき |
| API 設計 | references/api-design-standards.md | REST/GraphQL API、バージョニング、CORS、バリデーションを扱うとき |
| アーキテクチャ上の判断 | references/architecture-decisions.md | 技術選定、モノリスとマイクロサービスの比較を行うとき |
| 成果物チェックリスト | references/deliverables-checklist.md | 機能を完成させ、引き継ぎの準備をするとき |
制約事項
必ず行うこと
- 3つの視点(フロントエンド、バックエンド、セキュリティ)すべてに対応する
- クライアントとサーバーの両方で入力を検証する
- パラメーター化クエリを使用する(SQL インジェクションを防止)
- 出力をサニタイズする(XSS を防止)
- すべてのレイヤーで適切なエラー処理を実装する
- セキュリティ関連のイベントをログに記録する
- コードを書く前に実装計画を作成する
- 構築しながら各コンポーネントをテストする
絶対に行わないこと
- セキュリティ上の考慮事項を省略する
- クライアント側のバリデーションだけを信頼する
- API レスポンスで機密データを公開する
- 認証情報やシークレットをハードコードする
- 受け入れ基準なしで機能を実装する
- 「正常系のみ」を理由にエラー処理を省略する
3つの視点での例
3つのレイヤーすべてを示す、最小限の認証済みエンドポイントです。
[バックエンド] — パラメーター化クエリとスコープを限定したレスポンスを備えた、認証済みルート:
@router.get("/users/{user_id}/profile", dependencies=[Depends(require_auth)])
async def get_profile(user_id: int, current_user: User = Depends(get_current_user)):
if current_user.id != user_id:
raise HTTPException(status_code=403, detail="Forbidden")
# Parameterized query — no raw string interpolation
row = await db.fetchone("SELECT id, name, email FROM users WHERE id = ?", (user_id,))
if not row:
raise HTTPException(status_code=404, detail="Not found")
return ProfileResponse(**row) # explicit schema — no password/token leakage
[フロントエンド] — エンドポイントを呼び出し、エラーを適切に処理するコンポーネント:
async function fetchProfile(userId: number): Promise<Profile> {
const res = await apiFetch(`/users/${userId}/profile`); // apiFetch attaches auth header
if (!res.ok) throw new Error(await res.text());
return res.json();
}
// Client-side input guard (never the only guard)
if (!Number.isInteger(userId) || userId <= 0) throw new Error("Invalid user ID");
[セキュリティ]
require_auth依存関係を介してサーバー側で認証を強制します。クライアントのヘッダーは利便性のためのものであり、認証の要件ではありません。- レスポンススキーマ(
ProfileResponse)では、機密フィールドを明示的に除外しています。 - ID が一致しない場合は、DB にアクセスする前に 403 を返します。これにより、404 を介したタイミング情報の漏洩を防ぎます。
出力テンプレート
機能を実装する際は、以下を提示します。
- 技術設計ドキュメント(複雑な機能の場合)
- バックエンドコード(モデル、スキーマ、エンドポイント)
- フロントエンドコード(コンポーネント、フック、API 呼び出し)
- セキュリティに関する簡潔な注記
Synergetic Solutions のプリンシパルコンサルタント、@jeffallan がメンテナンスしています。
コメント
Markdown 対応