Communitygithub.com

CrziDev/claude-skills

ユーザーが /generate-frame と入力した場合、ブラウザウィンドウのモックアップフレームに収めるスクリーンショット画像やフォルダを指定した場合、またはスクリーンショットからポートフォリオ/ショーケースのカバー画像を作成したい場合に使用します。

claude-skills とは?

このスキルは、既存のスクリーンショットを、frame-kit ツールを使用してブラウザウィンドウなどのフレーム画像(PNG)に変換します。主に Claude Code などの AI エージェント環境で動作し、ユーザーが「/generate-frame」と指示したり、画像やスクリーンショットフォルダを指定した際に自動的にフレーム処理とカバー画像の作成を行います。スキルはまず frame-kit のインストール場所を特定し、必要な依存関係(npm install、Chromium)を確認・インストールします。その後、指定された画像をフレーム化し、スクリーンショットフォルダの場合は、全体の構成が伝わる表紙(カバー画像)を2枚のスクリーンショットから自動選択します。最後に、生成されたフレーム画像の妥当性を検証するスクリプトを実行し、品質を確認した上で結果を報告します。解像度やフレームスタイル(標準、ペーパーなど)のオプションも柔軟に指定可能で、READMEやプレゼンテーション用のプロフェッショナルな画像作成を効率化します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CrziDev/claude-skills/tree/HEAD/generate-frame

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

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

ドキュメント

フレーム生成

既存のスクリーンショットを frame-kit でフレーム付きPNGに変換します。描画はすべて frame-kit が行います。このスキルはツールの場所を特定し、実行し、結果を確認してカバー画像を選びます。プロジェクトのページを先にスクリーンショットする場合は、generate-project-frames を使用してください。

1. frame-kit の場所を特定して確認する

フォルダを <frame-kit> と呼びます。cli.mjs と frame-kit という名前の package.json を持つ最初のものを次の順序で探します:

  1. $FRAME_KIT_DIR
  2. PATH 上で frame-kit コマンドが指すフォルダ(readlink -f "$(command -v frame-kit)" のフォルダ)
  3. ~/projects ~/code ~/dev ~ を深さ 4 まで検索、node_modules はスキップ(複数一致した場合はどれか尋ねる)
  4. ユーザーに尋ねる。ない場合は git clone https://github.com/CrziDev/frame-kit を提案する

その後:

  • node_modules がない場合 → <frame-kit> で npm install を実行する。
  • node <frame-kit>/cli.mjs --help を実行し、表示されるオプションからのみコマンドを構築する。--resolution または --fit がない場合、インストールが古いので省略し、ユーザーに git pull するよう伝える。
  • 「Chromium not found」→ <frame-kit> で npx playwright install chromium を実行する、または CHROME_PATH を設定する。

パスをスキルファイルに書き込まないでください。

2. フレーム化

node <frame-kit>/cli.mjs single <画像|フォルダ> --out <フレーム化ディレクトリ> [オプション]

  • --out: 常に渡します。デフォルトは <入力ディレクトリ>/framed/ で、生のフォルダ内にネストされます。フレーム化された画像はソースから分離してください。
  • --url "<ホスト>/{name}": アドレスバーのテキスト。{name} はファイル名から NN- プレフィックスを除いたものです。アプリの実際のホストとパスがわかっている場合はそれを使用し、そうでない場合は省略します。
  • --style paper: 領収書、請求書、印刷物。フォルダ実行では1つのスタイルが使用されるため、該当ファイルのみを --style paper と同一 --out で個別に再実行します。
  • --resolution standard|high|max: デフォルトは max (3840×2400)。READMEやクイックプレビューには standard (1920×1200)、ウェブやスライドには high (2560×1600) を使用します。解像度が高いほどフレームとテキストが鮮明になりますが、スクリーンショットの詳細が増えるわけではありません。1バッチにつき1つの解像度を使用します。
  • --fit auto|contain|cover: デフォルトは auto(スクリーンショット全体、非常に縦長のページは上部から切り抜き)。トリミングを修正する場合のみ変更します。

終了コード 1 は一部のファイルが失敗したことを意味しますが、他のファイルは書き込まれ、失敗は stderr にリストされます。原因(読み取り不能または破損した画像、サポートされていないタイプ、50 MB 超過)を修正し、それらのファイルのみ再実行します。すべてのファイルが失敗した場合は、Chromium が原因である可能性があります。

3. カバー画像(フォルダ入力のみ)

画像を確認し、互いに補完し合う2枚を選びます:

  • 裏(back): 製品の概要(ダッシュボード、分析、ホーム)、横長、サムネイルサイズで読めるもの。
  • 表(front): アプリの機能を示す画面、実際のコンテンツ、裏とは異なるレイアウトのもの。
  • 絶対に選ばないもの: ログイン、空の状態、エラーページ、非常に長い全ページショット、領収書、または同じ画面を2回。

node <frame-kit>/cli.mjs cover <裏> <表> --back-url "…" --front-url "…" --out <フレーム化ディレクトリ>/00-cover.png(同じ --resolution)。フレーム化された画像ではなく、ソースのスクリーンショットを渡します。表示する価値のある画像が1枚だけの場合、またはユーザーが見出しを欲している場合? headline を使用します(--help 参照)。

4. 確認と報告

  1. node <このスキル>/scripts/verify-frames.mjs <入力> <フレーム化ディレクトリ> --resolution <プリセット> を実行し、すべての入力に対して、適切なサイズの有効なPNGとカバー画像があることを確認します。外観は判断しません。
  2. 各出力PNG(とカバー画像)を確認します。空白または部分的に読み込まれたスクリーンショット、切り取られたコンテンツ、読めないほど小さいテキスト、間違ったスタイル(ブラウザウィンドウ内の領収書)、間違ったアドレスバーがないか確認します。影響を受けるファイルのみをオプション調整後に再実行し、再確認します。画像を表示できない場合はその旨を伝えます。
  3. 報告: フレーム化されたフォルダ、失敗または再実行されたファイル、カバー画像のペア、そして2枚が互いにどのように補完し合うかを一文で説明します。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル