Communitygithub.com

jove525/portfolio-builder

一ページのポートフォリオサイトを計画、構築、デプロイします。面談、ロックされたビルド概要、Claude Codeプロンプトを段階的に提供し、GitHubへのプッシュ、Netlifyへのデプロイ、ライブ監査までを行います。

portfolio-builder とは?

Portfolio Builderは、個人の仕事を効果的な一ページポートフォリオに変えるAIエージェントスキルです。Claudeがチャットでコンテンツを計画し、BRIEF.mdに確定した後、Claude Code向けの段階的なプロンプトを生成します。このプロンプトに従ってClaude Codeがローカルでサイトを構築し、GitHubにプッシュ、Netlifyにデプロイします。最後にClaudeがリポジトリとライブサイトの両方を監査します。このスキルは、カジュアルで直接的な文体、ショートセンテンス、エムダッシュの不使用など、厳格なライティングルールを強制し、AAコントラスト、モバイルファースト、Lighthouseスコア95以上などのアクセシビリティとパフォーマンス基準を満たすことを保証します。Claude Code、Cursor、CodexなどのAIエージェントプラットフォームと互換性があり、面談、コンテンツ在庫の下書き、プロジェクトの包含ルール、アセット管理、デプロイ、監査を含む7つのフェーズで構成されています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jove525/portfolio-builder-skill/tree/HEAD/portfolio-builder

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

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

ドキュメント

ポートフォリオビルダー

個人の仕事を一ページのポートフォリオに変えます。Claudeはチャットでコンテンツを計画し、BRIEF.mdに確定し、Claude Codeプロンプトを引き継ぎます。Claude Codeがローカルでビルドし、GitHubにプッシュし、Netlifyがデプロイします。その後、Claudeはリポジトリとライブサイトを監査します。

このスキルが生成するすべてのものに関するライティングルール: カジュアルで直接的な口調、短い文、エムダッシュなし(通常のハイフンのみ)。

フェーズ1: 質問する前に収集する

  • 既にわかっていることを引き出す: メモリ、過去のチャット、ライブサイト(実際の機能リストとコピーのためにそれらを取得する)。
  • 最初にコンテンツの棚卸しを下書きする。決して白紙の質問票から始めない。

フェーズ2: 概要v1を下書きし、最大4つの決定事項を質問する

実際のコピーでセクションを下書きし、ビルドを変更するものだけを質問する:

  1. 主なオーディエンス(クライアント、採用担当者、またはその両方、そしてどちらが主か)。
  2. 可視性の制約(現在の雇用主を明記するか一般名にするか、非公開にするものがあれば)。
  3. 含めるプロジェクト。
  4. どこに置くか(最初はNetlifyサブドメインで問題ない)。

ガードレール:

  • 捏造された指標、推薦文、クライアントは掲載しない。
  • 本人が行っていない主張(例: 本業で行っていないAI関連の仕事)は掲載しない。
  • チームの成果はチームの成果としてクレジットする。
  • 雇用主を一般名にする場合は、それを特定できる詳細(国リスト、正確な役職と業界)も削除する。リストではなく「5つの市場」と表記する。
  • 地域の表現(例: 1つの国が大陸にまたがる場合の「アジア市場」)と、ヒーローコピー内の曖昧な代名詞に注意する。

プロジェクト包含ルール: プロジェクトは、それがライブであり、オーディエンスが対価を払うであろうスキルを示す場合に掲載される。多すぎる事業は「あなたに割く時間がない」というシグナルになる。保留中または過去の作業は、小さな「実験室から」という行に、正直にラベルを付けて掲載する。名前のない、または未公開のプロジェクトは待機する。

ツール: 実際にハンズオンで使用したツールのみをリストする。単に精通しているツールは、1行の脚注に入れる(「XとYにも対応可能」)。

フェーズ3: ギャップを埋める

以下を依頼する: 表示名、顔写真、ビルドごとに1枚のスクリーンショット、ライブURL、GitHub URL、連絡先メールアドレス、ソーシャルメディア。提供されたサイトコピーは、ポートフォリオに適した形に書き換える(それが何か、誰のためのものか、何を構築したか)。 すべてのカードリンクは、そのアイテムを実際に説明するライブページを指している必要がある。ページが準備できていない場合は、リンクなしでタグを付ける(例: 「近日公開」)。 準備ができていないもの(予約リンク、「一緒に仕事をしましょう」、推薦文)は、v1をブロックする代わりに「後で」リストに延期する。

フェーズ4: BRIEF.mdをロックする

以下のセクションを順に含むBRIEF.mdを作成する:

  • 目標(10秒テスト: 何を構築するか、証拠、連絡方法)
  • オーディエンス
  • コピーのルール(口調、エムダッシュなし、可視性と正確性のガードレール、コピーをそのまま使用)
  • 技術(プレーンなHTML/CSS/バニラJS、ビルドステップなし; index.html、styles.css、main.js、/assets; GitHub + Netlify; Lighthouse 95以上; モバイルファースト)
  • デザインの方向性(デフォルトはApple風: Interまたはシステムフォント、十分なホワイトスペース、〜1080px最大幅、〜680pxテキストブロック、タイトな大見出し、ニュートラルパレット、20-24pxカード半径、ヘアライン境界線、控えめに使用する1つのアクセントカラー、ライト/ダーク切り替え、動きの軽減を尊重した微妙なフェードアップ、最小限のブラウザフレームカード内のスクリーンショット、固定スティッキーナビゲーション)
  • レイアウトルール(最初から組み込む):
    • ナビゲーションとすべてのセクションは1つのコンテナを共有し、すべての左端が揃うようにする。
    • すべてのギャップに1つのセクション間スペーシングトークン(デスクトップ約96px、モバイル約56px)を使用し、パディングを積み重ねない。
    • ヒーローは1366x768および375x812で、ブラウザツールバーを含めて(可視範囲約650pxおよび635px)ファーストビューに収まる。
    • 見出し: モバイルではtext-wrap: pretty、デスクトップではbalance; 強制改行なし。
    • すべてのセクションには、目に見える見出しまたはアイブロウラベルがあり、何も浮遊しないようにする。
  • アセット(正確なファイルパス; スクリーンショットはモバイルサイズを小さくしたWebPに変換、フォールド以下は遅延読み込み; 欠落している場合はプレースホルダー、壊れた画像は絶対に表示しない)
  • ページコンテンツ、上から下へ、最終コピー: ヒーロー、私がしていること(3つのカード)、ビルド(注目カード + グリッド + ラボ行)、構築方法、ツール(グループ化されたピル)、背景ストリップ、原則(本人の言葉で、引用ではない)、連絡先、フッター
  • SEOとメタ(タイトル、説明、OG画像、ファビコン、セマンティックHTML、altテキスト、フォーカス状態、AAコントラスト)
  • 事前入力された詳細: リポジトリURL、優先サブドメインと代替、ソーシャルハンドル、メールアドレス(Claude Codeが質問しなくて済むように)
  • 後で(v1には含めない)

アクセントカラー: ビルドのスクリーンショットの色から分離するものを選択する。ライトモードとダークモードの正確な16進数値を指定し、両モードでリンクとボタンテキストのアクセントに対するAAコントラストを確認する(ダークモードのボタンは通常、明るいアクセントに暗いテキストが必要)。

BRIEF.mdをファイルとして提供する。

フェーズ5: セットアップ手順 + 4つのプロンプト

セットアップ(1回):

  1. 空のGitHubリポジトリを作成し、git clone <repo-url>でローカルフォルダにクローンしてgitが既に配線されている状態にする。
  2. BRIEF.mdをルートに配置し、/assetsと/assets/shotsを名前付きファイルで追加する。
  3. そのフォルダでClaude Codeを開く。

プロンプト1、計画:

BRIEF.mdを完全に読んでください。まだコードは書かないでください。
簡潔なビルド計画を教えてください: ファイル構造、セクションごとのレイアウト、使用するカラートークンとタイプスケール、そして概要に疑問点や競合があればそれら。1画面以内に収めてください。
アクセントカラー: ライトモードは<LIGHT_HEX>、ダークモードは<DARK_HEX>。控えめに使用し、両方がAAコントラスト(ボタンテキスト含む)に合格することを確認してください。

その質問に対する回答を、ペースト可能な1つの返信で支援する。

プロンプト2、ビルド:

BRIEF.mdと合意した計画に正確に従ってサイトをビルドしてください。
- コピーは一字一句そのまま使用すること。エムダッシュはどこにも使用しないこと。
- プレーンなHTML、CSS、バニラJS。フレームワークもビルドステップもなし。
- アクセント: ライト<LIGHT_HEX>、ダーク<DARK_HEX>。それ以外はすべてニュートラル。
- BRIEF.mdのレイアウトルールに従うこと(共有コンテナ、1つのスペーシングトークン、ヒーローはファーストビューに収めること)。
- /assetsの画像をWebPとして使用すること。画像がない場合はクリーンなプレースホルダーを表示すること。
- ライト/ダークモード、固定スティッキーナビ、スクロール時のフェードアップ(動きの軽減対応)。
完了したら、ローカルサーバーを起動し、レビューできるようにURLを教えてください。

プロンプト3、磨き上げ:

Appleのシニアデザイナーのようにサイトをレビューし、見つけた問題を修正してください:
1. 375px、768px、1366px、1440pxで確認すること。水平スクロールがなく、何も窮屈でないこと。
2. すべての左端が揃っていること。すべてのセクションギャップは1つのスペーシングトークンを使用していること。
3. ヒーローは1366と375でブラウザツールバーを含めてファーストビューに収まること。
4. ダークモードは意図的に見えることであって、単に反転したものではないこと。アクセントは両モードで読みやすいこと。
5. アクセシビリティ: altテキスト、フォーカス状態、AAコントラスト、セマンティック見出し。
6. すべてのファイルでエムダッシュを検索し、置き換えること。
7. Lighthouseを実行し、4つのスコアすべてを95以上にすること。
変更した内容の短いリストを教えてください。

その後、本人が満足するまで平易な言葉でフィードバックを与える。

プロンプト4、プッシュしてデプロイ:

このフォルダは<REPO_URL>から既にクローンされています。
1. .gitignoreとnetlify.tomlを追加します(公開ディレクトリ = ルート、適切なキャッシュヘッダー、BRIEF.mdとソースPNGが公開されないように404)。
2. 明確なメッセージですべてをコミットし、mainにプッシュします。
3. リポジトリをNetlifyに接続します。まず<SUBDOMAIN>を試し、フォールバックに<FALLBACK>を試します。NetlifyのGitHubアプリがリポジトリを認識できない場合は、アクセスを許可する方法を教えてください。

注: Claude Codeはしばしば先走ってビルド、磨き上げ、デプロイを一度に行うことがあります。それでも問題ありません。監査にスキップしてください。

フェーズ6: プッシュ後の監査

リポジトリまたはライブURLが共有されたとき:

  1. リポジトリをクローンし、確認する: コピーはBRIEF.mdと一致しているか、何も捏造されていないか、エムダッシュがないか、制限された名前がないか、すべてのリンクが正しいか、画像はaltテキストとサイズを持つWebPか、メタ/OG/ファビコンが存在するか、内部ファイルがライブサイトからブロックされているか。
  2. ライブサイトを1440と1366(ライト)および375(ダーク)のブラウザで視覚的に確認する: エッジの配置、ギャップの一貫性、ヒーローがファーストビューに収まっているか、見出しの折り返し、オーバーラップがないか。
  3. 修正内容を1つのペースト可能なClaude Codeプロンプトとして提供し、プッシュ後に再確認する。 リポジトリが空の場合は、その旨を明確に伝え、最初にプッシュするよう依頼する。

既知の落とし穴:

  • Netlifyは2026年8月19日以降に作成された無料プランのプロジェクトに「Powered by Netlify」バッジを追加します。これはコードにはありません。プロジェクト設定 > 一般 > Powered by Netlifyバッジで、プロジェクトごとにオフにしてください。
  • 遅い接続からのライブLighthouseスコアは変動します。ローカル実行だけでなく、pagespeed.web.devで判断してください。

フェーズ7: その他のプレゼンスを同期する

GitHubプロフィールのREADME(およびその他のバイオ)をポートフォリオと揃えることを提案する: 同じポジショニングライン、同じ連絡先メールアドレス、ライブビルドとポートフォリオへのリンク、そしてポートフォリオから意図的に除外したプロジェクトを削除する。

関連スキル