Communitygithub.com

Portfolio One Shot

実際のファイルフォルダから、一切の架空情報を含まない、検証可能なポートフォリオをワンコマンドで生成します。ローカルアセットから作品集を作成したい場合に使用します。

Portfolio One Shot とは?

このスキルは、ユーザーが指定したディレクトリ内の実際のファイル(画像、動画、プロジェクトフォルダ、READMEなど)をスキャンし、完全に事実のみに基づいたポートフォリオサイト(HTML)とATS対応のプレーンテキスト版を生成します。最大の特徴は「ゼロ・ファブリケーション(一切の虚偽記載禁止)」という原則で、プロジェクト名、役割、数値、クライアント名など、ファイルやユーザーから提供された情報以外は一切生成しません。欠落したフィールドは可視化されたギャップとして表示され、検証ツールが「失敗」を最初に報告します。`case_study`(テキスト重視)と`gallery`(ビジュアル重視)の2モードをサポートし、Claude CodeやCursorなどのAIエージェント上でコマンド一つ(`all`)でスキャン、設定、ビルド、検証の全工程を実行します。出力物には、作品の完全性をチェックする検証レポート(verify-report.md)が含まれ、架空の情報で体裁を整えることを禁止する厳格なルールに従います。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CatsMansion/portfolio-one-shot/tree/HEAD

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

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

ドキュメント

Portfolio One Shot は何をしますか?

目的

実在の作業ディレクトリを、開いて確認でき、機械が読め、独立して検証可能なポートフォリオに変換します。モデルが架空のプロジェクトコピーを一行も書くことなく実現します。

優先順位順に、3つの不変条件:

  1. ゼロ・ファブリケーション。 表示されるすべての事実は、ファイル、READMEの抜粋、またはユーザーが提供した値に遡らなければなりません。欠落しているフィールドは可視化されたギャップとして表示されます。プロジェクト名、役割、指標、クライアント、引用、結果、画像を決して発明してはいけません。
  2. 独立した検証。 成功を報告する前に、出力に対して検証ツールを実行します。失敗を最初にリストし、合格を次にリストします。基準のリストが緑色だからといって、ポートフォリオが良く見えるという証拠として提示してはいけません。視覚的な判断はユーザー自身の目に委ねられます。
  3. ワンコマンド。 all はスキャン → 設定 → ビルド → 検証を実行します。2番目のコマンドは欠陥であり、ワークフローではありません。

使用するタイミング

  • ユーザーが「一键生成作品集 / 做个作品集 / 把我的项目做成作品集 / build a portfolio from this folder」と言った場合。
  • ユーザーが画像、動画、またはプロジェクトフォルダのディレクトリを渡し、それらを提示したい場合。
  • ユーザーが作品を追加または削除した後、ポートフォリオを再生成したい場合。
  • ユーザーが既存のポートフォリオに欠落している証拠がないか確認したい場合。

使用してはいけない場合: ユーザーが作り話のコンテンツを含む装飾的なデモサイト、特定のアートディレクションされたビジュアルスタイル、またはホストされたプラットフォームとの統合を望んでいる場合。これらは異なるジョブです。その場合、黙ってこのスキルのゼロファブリケーションルールに切り替えてはいけません。その違いを明確に伝えてください。

ワンコマンド

python scripts/portfolio.py all <SOURCE_DIR> --out <OUTPUT_DIR> --mode <case_study|gallery>

例:

python scripts/portfolio.py all "C:/work/my-projects" --out "C:/work/portfolio-dist" --mode gallery

このコマンドは、出力ディレクトリに index.html、portfolio.txt、portfolio.md、projects.json、assets/、build-report.json、および verify-report.md を書き込み、その後検証ツールの判定を表示します。ファイル表示ツールを使用して index.html をユーザーに開かせてください。最初に視覚的な成果物をリストに含めてください。

ユーザーが projects.json を編集した後に再ビルドするには、build と verify のみを実行します:

python scripts/portfolio.py build <OUTPUT_DIR>/projects.json --out <OUTPUT_DIR> --mode gallery
python scripts/portfolio.py verify <OUTPUT_DIR>

ワークフロー

フェーズ0 · モードを決定し、黙って推測しない

2つのモードが存在するのは、調査により2つのドメインが相反するものを要求することがわかったためです(references/content-spec.md §ドメイン分割 参照)。

モード対象テキスト密度レイアウト
case_studyUX、プロダクト、デザイン、エンジニアリング、研究長いナラティブ;7つの必須フィールドグループプロジェクトごとにセクション、画像は間に挿入
galleryゲームアート、イラスト、コンセプトアート、写真、アニメーション最小限の単語;作品に語らせる画像優先のグリッド、クリックでライトボックス

ユーザーが選択していない場合は、素材から推測し、実行前にその推測を一文で伝えます。その後、ユーザーからの一言で上書きできるようにします。誰かのポートフォリオにデフォルトをハードコードしてはいけません。

フェーズ1 · 実際の素材をスキャンする

scan はサブディレクトリをプロジェクトとして列挙します。各プロジェクトについて以下を記録します:

  • ディレクトリ名をプロジェクトタイトルの候補として(事実であり、発明ではありません)。
  • すべての画像ファイルと動画ファイルについて、バイトサイズ、SHA-256プレフィックス、ピクセル寸法。
  • README.md / project.md / about.md の最初の段落を、そのまま summary 候補として、ファイル名と行範囲を示す _sources エントリとともに。
  • どのファイルも提供できなかったフィールドの missing リスト。

未知の拡張子を持つファイルは、削除されることなく manifest.json に unclassified として保持されます。ソースファイルを決して削除、名前変更、移動、またはリサイズしてはいけません。出力ディレクトリにのみ書き込みます。

フェーズ2 · ビルド

build は projects.json(スキーマは references/config-schema.md にあり)を読み取り、以下をレンダリングします:

  • index.html — ライトテーマ、レスポンシブ、システムフォントスタック、CDN依存なし、派手なテンプレートなし。すべての <img> は alt、width、height、loading="lazy" を持ちます。画像は assets/ 下の相対パスを使用します。
  • portfolio.txt — ATS解析と履歴書へのコピーペーストのためのプレーンテキストプロジェクトサマリー。
  • portfolio.md — READMEやメール用の同じ事実をマークダウンで。
  • 欠落しているフィールドの正確な数を記載した可視的な警告バナー。これにより、スケルトンが完成したポートフォリオと誤認されることを防ぎます。

--embed が設定されている場合、10 KB未満の画像のみをbase64としてインライン化し、それより大きいものは外部のままにします;しきい値を超えるすべてのファイルについて警告を出力します。Base64はペイロードを約33%増加させ、レイジーロードできません — references/content-spec.md §画像ポリシー を参照してください。

フェーズ3 · 報告前に検証する

verify は、フィールドの完全性、画像の存在とデコード可能性、意味のある代替テキスト、プレースホルダー画像ホストの不在、リンクの形状、HTML構造、プレーンテキストのパリティをチェックします。verify-report.md に 失敗 を最初に、合格 を次に、その後 制限事項 / 未検証 を書き込みます。

終了コード1は、赤色の項目が存在することを意味します。正直に報告してください。基準を合格するように編集したり、失敗した生成チャネルを再試行したり、制限事項を隠したりしてはいけません。

ポジティブ/ネガティブコントロールとして、python scripts/portfolio.py verify <dir> --self-test を実行します — メモリ内に意図的に壊れたプロジェクト1つと完全なプロジェクト1つを構築し、検証ツールが前者をフラグし、後者をクリアすることを確認します。ネガティブコントロールが緑色で合格した場合、検証ツールは壊れています;フィクスチャではなく、検証ツールを修正してください。

フェーズ4 · 引き渡す

最初に index.html を提示してユーザーが開けるようにし、次に verify-report.md、そして projects.json を提示します。テキストでの返信では、判定、欠落フィールドの正確な数、および次の単一のアクション(projects.json を埋めること)を伝えてください。ポートフォリオが見栄えがすると主張してはいけません。警告バナーが存在する間は、送信する準備ができていると主張してはいけません。

ゼロファブリケーション契約

ハードルール。すべて references/content-spec.md に文書化された障害モードから派生しています:

  • 入力に存在しないプロジェクトの文章、キャプション、役割、指標、成果、クレジット、クライアント名を決して書いてはいけません。欠落フィールドは [MISSING: field] としてレンダリングされます — 目立つように、決して黙って空白にせず、もっともらしい文に言い換えてはいけません。
  • 実際の作品の代わりにプレースホルダー画像ホスト(picsum.photos、placehold.co、lorem、ストックURL)を決して使用してはいけません。画像のないプロジェクトは、明示的な空メディアブロックをレンダリングします。
  • _sources エントリなしで指標を引用してはいけません。ユーザーが指標を提供した場合、source: "user-supplied" と記録します;それを「検証済み」にアップグレードしてはいけません。
  • スタジオ名、個人の経歴、連絡先詳細を決して発明してはいけません。それらを空のままにし、失敗としてリストします。
  • READMEを使用する場合、段落を逐語的にコピーし、そのファイルと行範囲を記録します。磨き上げたり、短縮したり、書き直したりしてはいけません。
  • AI支援による文言を、ユーザー自身の意思決定として提示してはいけません。プロセスと考察のフィールドは、ユーザーが提供するまで空のままにします。

マルチバージョン出力

同じ projects.json がターゲットを絞ったバージョンをサポートします。プロジェクトIDの select リストを追加するか、--only id1,id2 を build に渡すことで、特定のオーディエンスを対象としたバージョンを生成できます。並べ替えは設定変更であり、自動的な書き換えではありません。これは、発見用のウェブサイトと応募用のPDFまたはデッキの間の文書化された分割に従います。

注意点

  • 断片から判断しないでください。 README全体、projects.json 全体、検証レポート全体を読んでから、何かが完了しているか壊れているかを結論付けてください。
  • 基準に合格することは品質ではありません。 緑色の検証ツールは、ファイル構造が健全であることを意味します。美しさにはユーザーの目が必要です。
  • ページを完成させて見せるためにギャップを埋めないでください。 ユーザーが事実を提供していない場合、明らかに不完全なページが正しい出力です。
  • 個人のディレクトリには触れないでください。 スキャンはソースに対して読み取り専用です。すべての書き込みは出力ディレクトリに送られます。
  • PDF生成、ホスティング、GitHub APIアクセスにスコープクリープしないでください。 これらにはユーザーからの明示的な決定が必要です。
  • 画像の寸法は重要です。 width と height を出力することで、レイアウトシフトを防ぎます。Pillowが利用できない場合は、ヘッダー解析にフォールバックし、可視的な警告を出力します;決して黙って劣化させてはいけません。
  • 1フォルダ = 1プロジェクトです。 ユーザーの素材がフラットな場合は、グループ化を依頼するか、--flat を使用してすべてのメディアを含む1つのプロジェクトを作成します。グループ化を発明してはいけません。

リソース

パス役割
scripts/portfolio.py単一CLI: scan、build、verify、all、--self-test。標準ライブラリとオプションのPillow。
references/content-spec.md研究に基づいたコンテンツルール、ドメイン分割、画像ポリシー、ソースURL。フィールド定義やテンプレートを変更する前に読み込んでください。
references/config-schema.md完全な projects.json スキーマ、フィールドの意味、およびソースとしてカウントされるもの。
assets/template.htmlライトテーマのレスポンシブテンプレートで、両方のモードをサポート。{{TOKEN}} プレースホルダーのみを置き換えてください;見た目を追求するためにCSSを書き換えてはいけません。
assets/projects.sample.json明確にラベル付けされたデモ設定。これをユーザーの実際のポートフォリオとして出荷してはいけません。

関連スキル