← スキル一覧に戻る

file-storage
by TakumiOkayasu
dotfiles for work
⭐ 0🍴 0📅 2026年1月23日
SKILL.md
name: file-storage description: ファイルアップロード、S3、ファイルシステム操作を扱う際に使用。
File & Storage
📋 実行前チェック(必須)
このスキルを使うべきか?
- ファイルアップロードを実装する?
- S3連携を行う?
- ファイル検証処理を実装する?
- 署名付きURLを生成する?
前提条件
- 許可するファイルタイプを定義したか?
- ファイルサイズ上限を決定したか?
- 保存先を決定したか?(ローカル/S3等)
禁止事項の確認
- ユーザー入力のファイル名をそのまま使おうとしていないか?
- 拡張子だけでファイルタイプを判断しようとしていないか?
- サイズ制限なしでアップロードを許可しようとしていないか?
- 機密ファイルをパブリックにしようとしていないか?
トリガー
- ファイルアップロード実装時
- S3連携時
- ファイル検証処理時
- 署名付きURL生成時
🚨 鉄則
ユーザーアップロードは信用しない。検証必須。
アップロード検証
// ⚠️ 必須チェック
const ALLOWED_TYPES = ['image/jpeg', 'image/png', 'image/webp'];
const MAX_SIZE = 5 * 1024 * 1024; // 5MB
function validateUpload(file: File) {
// MIMEタイプ(⚠️ 拡張子だけで判断しない)
if (!ALLOWED_TYPES.includes(file.mimetype)) {
throw new Error('Invalid file type');
}
// サイズ
if (file.size > MAX_SIZE) {
throw new Error('File too large');
}
// ファイル名サニタイズ
const safeName = sanitizeFilename(file.originalname);
}
S3署名付きURL
import { getSignedUrl } from '@aws-sdk/s3-request-presigner';
const url = await getSignedUrl(s3Client, new GetObjectCommand({
Bucket: 'my-bucket',
Key: 'file.pdf'
}), { expiresIn: 3600 }); // 1時間
🚫 禁止事項まとめ
- ユーザー入力ファイル名のそのまま使用
- 拡張子だけでのファイルタイプ判断
- サイズ制限なしのアップロード
- 機密ファイルのパブリック公開
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です