Communitygithub.com

fuzzyplace/living-stage

キャラクター主導のナラティブポートフォリオをガイド付きでセットアップします。lil_guy_portfolio テンプレートから、インタビューを通じて5つのカスタマイズ箇所を埋め、ビルド、チェック、デプロイまで行います。

living-stage とは?

このスキルは、`fuzzyplace/lil_guy_portfolio` テンプレートをベースに、キャラクターが語りかけるようなインタラクティブなポートフォリオサイトを、ユーザーとの対話形式で段階的に構築するためのガイドです。主な流れは、(1)テンプレートのコピー(コード生成はしない)、(2)1問ずつ進めるインタビュー(意図、ストーリー、文体、構造、実際のセリフ、キャラクターデザイン、カラーパレットとフォント、リンク)、(3)サイトのビルドと各種チェック(コントラスト比、コピールール、ビジュアルリグレッションなど)、(4)デプロイの順序で進みます。このスキルは、AIエージェント(Claude Code, Cursor, Codexなど)向けに設計されており、**エンジン部分(アート、コンポーネント、状態管理など)には一切手を加えず**、コンテンツとデザインの5つのファイルのみを編集します。インタビューでは、上位レイヤー(意図やストーリー)から決定し、後戻りしないトップダウン方式を採用。ユーザーの選択肢を提示し、推奨案を添えながら、1問ずつ回答を得て `docs/STORY.md` に記録します。最終的にはビルド、テスト、プライバシーチェックを経て、Vercelなどを通じてデプロイします。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/fuzzyplace/lil_guy_portfolio/tree/HEAD/.claude/skills/living-stage

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

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

ドキュメント

Living stage: ガイド付きセットアップ

あなたは、このサイトのバージョンを誰かが作成するのを手伝っています。それは、自分自身の人生を持つインクのキャラクター、ページをスクロールすると腕が印刷されるキャラクター、彼らの言葉で語られるストーリーです。エンジンはすでに動作しています。あなたの仕事は、テンプレートをコピーし、ユーザーにインタビューし、5つの箇所を埋めることです。エンジンコードは書かないでください。

カスタマイズする5つの箇所

対象ファイル
言葉:名前、タグライン、チャプター、コールトゥアクション、イースターエッグsrc/content/site.ts
リンクツリーのリンクsrc/content/links.ts
キャラクターの見た目src/content/character.tsx(プリセットは src/art/looks.tsx にあります)
パレット、フォント、モーションdesign/tokens.json、src/styles/tokens.css にミラーリング
共有画像とアイコンnpm run og(上記から生成)

また、インタビューの決定事項を docs/STORY.md に書き込みます。src/art/looks.tsx を読んで、プリセットの見た目を src/content/character.tsx にコピーしても構いません。

これ以外のすべて(src/art/、src/audio/、src/components/、src/sections/、src/App.tsx)はエンジンです。このジョブのために読む必要はありません。大きくて必要ありません。見た目と見出しのルールについては docs/CHARACTER.md を、トークンを触る前に docs/DESIGN_SYSTEM.md を読んでください。チェックが失敗し、エラーがそこを指している場合にのみ、エンジンファイルを開いてください。

ステップ0: コードを取得する(高速、コード生成なし)

現在のフォルダがすでにテンプレートのコピーである場合(src/content/site.ts と .claude/skills/living-stage/ がある場合)、ステップ1にスキップしてください。

それ以外の場合は、新しいサイトをどこに置くか(フォルダ名)を尋ね、履歴なしでテンプレートをコピーしてインストールします。

npx degit fuzzyplace/lil_guy_portfolio my-site
cd my-site
git init
npm install

次に、開発サーバーを起動し(npm run dev、またはプレビューツールがあればそれを使う)、ユーザーにサンプルサイトを見せて、何を作っているのか理解してもらいます。開発サーバーを実行したり見たりできない場合は、代わりにスクリーンショットを使用してください。npm run build && npm run verify は screenshots/verify-desktop-hero.png(ヒーロー、スタント中)などを書き出し、npm run looks は各見た目のクローズアップを書き出します。(初回のみ:npx playwright install chromium)。次に何が起こるかを2行で伝えてください。短いインタビューを1問ずつ行い、その後あなたがビルド、チェックし、(ユーザーの承諾を得て)デプロイします。

ステップ1: インタビュー

決定方法(これが最も重要)

トップダウンで、一度に1つのレイヤーずつ決定し、上のレイヤーが確定するまで下のレイヤーについて尋ねないでください。ストーリーと声が決まる前にビジュアルを完了すると、意味の通らないコピーになります。

  1. 意図: サイトの対象者、感じてもらいたいこと、最後にしてもらいたいこと。
  2. ストーリー: 上から下へスクロールするアーク。
  3. コピースタイル: 声、文章の形、フレーミングの仕掛け。
  4. 構造: ブロック(チャプター、ポップアウト、コンタクト)とそれぞれの目的。
  5. セリフ: 実際の言葉、タグラインが最初。
  6. キャラクター: 見た目。
  7. パレット、フォント、モーション。
  8. リンク: リンクツリーとコールトゥアクション。

決定した各レイヤーを docs/STORY.md の「LOCKED」セクションに書き込みます(進むにつれて、サンプルペルソナのエントリを置き換えていきます)。それ以降のすべては、これに遡って辿れる必要があります。もし後のアイデアが確定したレイヤーと矛盾する場合は、その旨を伝え、何かを変更する前に尋ねてください。

質問の仕方

  • 一度に1つの質問を、平易なチャットテキストで行います。複数質問のフォームやダイアログは使用しません。
  • 各質問の前に、 それが何を決定し、ページ上で何が変わるかを1行で説明します。
  • 説明ではなく、見せてください。 スタイルや見た目の質問では、3~4の選択肢を示し、それぞれを実際のコンテンツで書きます。毎回同じ3つの瞬間(冒頭、1つのチャプター、終わり)です。キャラクターについては、プリセットを見せてください(開発サーバーでは ?look=beanie|bun|hood|bot、またはクローズアップ用に npm run looks)。パレットについては、背景にテキストの色を付けたスウォッチを見せてください。
  • 1つの選択肢を推奨し、その理由を一文で説明します。 ユーザーが選ぶか、混ぜるか、却下します。
  • 各回答の後、 何が確定したかを1行で言い換え、docs/STORY.md に書き込み、次の質問をします。
  • 「あなたに任せる」 は、あなたが決定し、それを docs/STORY.md の「Decisions」に記録し、次に進むことを意味します。
  • コスト感を常に意識してください。すでに読んだファイルを再読せず、各回答に対してサイト全体を再生成せず、変更があった行だけを編集してください。

レイヤーごとに尋ねること

  1. 意図。 誰のためか(採用担当者、クライアント、協力者、友人)?何を感じてもらいたいか?最後にしてもらいたいことは何か(メール、電話予約、フォロー、何もしない)?
  2. ストーリー。 まず生の素材を尋ね(何をしてきたか、今何をしているか、次に何をしたいか、副業で何か作っているか)、次に2~3のアークをそれぞれ1行で提案します。デフォルトのアークは、過去、現在、スルーラインのあるポップアウト、未来、コンタクトです。チャプターとポップアウトの順序は自由です。
  3. コピースタイル。 ユーザー自身の素材に基づいてレンダリングされた3~4の声を提供します。例:静かな一人称、実験ノート、フィールドノート、ターミナルログ、またはミックス。1つを推奨します。
  4. 構造。 ブロックのリスト。各ブロックの役割を1行で説明し、どれがヘッダーナビゲーションに表示されるかも記載します。1つのブロックはコンタクトブロックでなければなりません。
  5. セリフ。 確定した声で全てのセリフをドラフトし、それらをコンテキストの中で一緒に見せます(site.ts を書いた後の開発サーバー)。まずタグラインを正しく設定します。docs/CHARACTER.md の「Headlines」を読んでください(2~4行の短い行、最初の行は実在の単語、背の高い文字と短い文字が隣り合い、行末にカンマ、1行あたり最大24文字)。また、アイブロウ、リード、フッターのイースターエッグ、コンソールのイースターエッグ、2つのトラストライン、404ラインも含みます。ドラフトコピーで問題ありません。ユーザーが承認するまで何も出荷しません。
  6. キャラクター。 4つのプリセットを見せます。どれも合わない場合は、1文の説明(髪型または帽子、服装、光を浴びるもの)を求め、最も近いプリセットを src/content/character.tsx にコピーし、1つのシェイプをずつ変更してカスタムルックを描きます。docs/CHARACTER.md のボックス、ジョイント、塗りつぶしのルールに従ってください。本人のものでありユーザーが依頼した場合を除き、写真や実在の人物の肖像をトレースしないでください。プリセットは parts.NECK と parts.SKULL を共有しています(src/art/looks.tsx からエクスポート)。結果は npm run looks で表示します(screenshots/look-current.png)。
  7. パレット、フォント、モーション。 3つのパレットをスウォッチで提供します(デフォルトのインクグレー、ストーリーに合う2つ)、アクセントカラー、デフォルトフォントを維持するかどうかを尋ねます。最初に design/tokens.json を編集し、変更したすべての色を src/styles/tokens.css にミラーリングします(グレーのランプだけがそこに --md-ref-gray-* 変数を持っています。他のすべての色は直接 --md-sys-color-<role> に配置されます)。その後 npm run tokens:contrast を実行します。これによりテキストのコントラスト(4.5:1)と2つのファイルの整合性がチェックされます。フォグ(fog-light、fog-mid、fog-deep、fog-edge)はパレットのムードを伝えます。4つすべてに色を付けます。アクセントは控えめに保ちます(docs/DESIGN_SYSTEM.md)。モーション:デフォルトの継続時間、またはより穏やかな(長い)継続時間。
  8. リンク。 各リンクとその遷移先を尋ねます(Connect、Work、Play、またはリネームしたグループ)。実際のURLのみ。まだ持っていないものは href: null, status: 'soon' とします(開発環境では表示、本番環境では非表示)。その後、コールトゥアクション:予約リンク、メール、またはプロフィールリンク。

ステップ2: ビルドとチェック

  1. 確定した内容からコンテンツファイルを書き込みます。site.url をサイトが公開される場所(https://host、末尾スラッシュなし)に設定します。まだドメインがない場合は、ホストのアドレス(例:https://their-site.vercel.app)を使用し、後で更新します。
  2. npm run check を実行します(型、コピールールを含むテスト、コントラストとトークンのずれ、ビルド)。失敗したものを修正します。site.url がまだテンプレートのデモ(lil-guy-portfolio.vercel.app)を指している場合や、コールトゥアクションが example.com を指している場合、ビルドは警告を出します。コピールール:emダッシュやenダッシュ、感嘆符、一般的な埋め草の単語は使用禁止です。
  3. npm run og を実行してシェアカードとアイコンを生成します。
  4. npm run build && npm run verify を実行します(初回のみ:npx playwright install chromium)。1440pxと375px、モーション軽減ありとなしで、キャラクターがロード時に表示されるか、エントランスとタイトルスタントを実行するか、スクロール中も画面に留まるか、エラーがないかをチェックします。スタントが再生されない場合、タグラインがキャラクターに立つ場所を与えていません。ユーザーと一緒に見直してください。
  5. スクリーンショット(screenshots/verify-desktop-hero.png と verify-mobile-hero.png はヒーローのスタント中、verify-desktop.png と verify-mobile.png はページの終わり)と開発サーバーを見せて、何を変更するか尋ねます。ユーザーが満足するまでループします。node scripts/shots-sections.mjs は各チャプターにつき1枚のショットを生成します。
  6. プライバシーチェック。 src/content/ 内のすべての文字列をもう一度読みます。公開したくない可能性のあるもの(自宅の住所、共有することを選択していない個人の電話番号やメールアドレス、家族や健康に関する詳細、許可を得ていない雇用主やクライアント)をフラグします。サンプルペルソナの残骸を削除します:「Pim Lanternby」、「PIM」、「The Quiet Hour」、ランプとラジオのセリフ、ユーザー自身から提供されていない example.com、example.org、example.net のリンク、そしてデモアドレス lil-guy-portfolio.vercel.app です。

ステップ3: デプロイ

デプロイするとユーザーのサイトが公開されるため、実行する前にユーザーに確認を取ってください。docs/DEPLOY.md に従ってください(デフォルトはVercel。NetlifyとGitHub Pagesも使用可能)。公開後、URLを開き、デプロイされた og.png でシェアカードを確認し、ユーザーにリンクを伝えてください。

最後に短いサマリーを伝えてください:何が公開されたか、何がまだ soon か、そしてユーザーが後で送ると言ったものがあればそれも含めます。

関連スキル