Back to list
TakumiOkayasu

file-storage

by TakumiOkayasu

dotfiles for work

0🍴 0📅 Jan 23, 2026

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時間

🚫 禁止事項まとめ

  • ユーザー入力ファイル名のそのまま使用
  • 拡張子だけでのファイルタイプ判断
  • サイズ制限なしのアップロード
  • 機密ファイルのパブリック公開

Score

Total Score

50/100

Based on repository quality metrics

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

Reviews

💬

Reviews coming soon