[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71ADQBV0JEZRGAD8BQB9M20":3,"skill-same:01M71ADQBV0JEZRGAD8BQB9M20":54},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":13,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M71ADQBV0JEZRGAD8BQB9M20","prototype",null,"設計上の疑問に答えるための使い捨てプロトタイプを作る。ステートモデルやロジックの手触りを確かめたいとき、UI がどう見えるべきかを探りたいときに使う。","love-dabimas\u002Fdabimas-factor","love-dabimas","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F277394005?v=4","01M71ADGN0AVQ90MBZFJWM1KA6","01M71ADGNSJW9EJPBRH8VZP57Y",0,"MIT","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fprototype\u002FSKILL.md",[],[5,18],"ui","2026-11-10 10:12:30",false,"---\nname: prototype\ndescription: 設計上の疑問に答えるための使い捨てプロトタイプを作る。ステートモデルやロジックの手触りを確かめたいとき、UI がどう見えるべきかを探りたいときに使う。\n---\n\n# プロトタイプ\n\nプロトタイプとは**疑問に答えるための使い捨てコード**である。疑問が形を決める。\n\n## 分岐を選ぶ\n\nどの疑問に答えようとしているのかを特定する — ユーザーのプロンプトから、周辺のコードから、あるいはユーザーがいるなら尋ねて：\n\n- **「このロジック \u002F ステートモデルは妥当か？」** → [LOGIC.md](LOGIC.md)。紙の上では判断しづらいケースにステートマシンを通せる、小さな対話型ターミナルアプリを作る。\n- **「これはどう見えるべきか？」** → [UI.md](UI.md)。1 つのルート上に大胆に異なる複数の UI バリエーションを生成し、URL の検索パラメータとフローティングボトムバーで切り替えられるようにする。\n\n2 つの分岐が生む成果物はまったく違う — ここを間違えるとプロトタイプ全体が無駄になる。疑問が本当に曖昧でユーザーにも連絡がつかない場合は、周辺のコードにより合う方をデフォルトにし（バックエンドのモジュール → ロジック、ページやコンポーネント → UI）、その前提をプロトタイプの先頭に明記する。\n\n## 両分岐に共通のルール\n\n1. **初日から使い捨てであり、そうと明記されていること。** プロトタイプのコードは実際に使われる場所の近く（プロトタイプ対象のモジュールやページの隣）に置いて文脈を分かりやすくする — ただし、通りすがりの読者にもプロトタイプであって本番コードではないと分かる名前を付ける。使い捨ての UI ルートには、プロジェクト既存のルーティング規約に従うこと。新しいトップレベル構造を発明しない。\n2. **1 コマンドで実行できること。** プロジェクト既存のタスクランナーが使えるもの — `pnpm \u003Cname>`、`python \u003Cpath>`、`bun \u003Cpath>` など。ユーザーが何も考えずに起動できなければならない。\n3. **デフォルトで永続化なし。** 状態はメモリに置く。永続化はプロトタイプが_検証する_対象であって、依存する対象ではない。疑問がデータベースを明示的に含む場合は、「PROTOTYPE — 消してよし」と分かる名前のスクラッチ DB かローカルファイルを使う。\n4. **磨き込みはしない。** テストなし、プロトタイプを_動かす_のに必要な分を超えるエラーハンドリングなし、抽象化なし。要点は素早く何かを学んで、捨てることだ。\n5. **状態を可視化する。** すべてのアクションの後（ロジック）またはバリアント切り替えのたび（UI）に、関連する状態の全体を出力・描画し、何が変わったかユーザーに見えるようにする。\n6. **終わったら削除するか吸収する。** プロトタイプが疑問に答えたら、削除するか、検証済みの決定を本物のコードに畳み込む — リポジトリに放置して腐らせない。\n\n## 完了したら\n\nプロトタイプから残す価値があるのは_答え_だけだ。それが答えていた疑問とともに、永続的な場所（コミットメッセージ、ADR、Issue、あるいはプロトタイプの隣の `NOTES.md`）に記録する。ユーザーがいるなら、その記録は短い会話で済む。いないなら、プレースホルダーを残しておき、プロトタイプを削除する前に本人（または次のパスの自分）が結論を書き込めるようにする。\n","# プロトタイプ\n\nプロトタイプとは**疑問に答えるための使い捨てコード**である。疑問が形を決める。\n\n## 分岐を選ぶ\n\nどの疑問に答えようとしているのかを特定する — ユーザーのプロンプトから、周辺のコードから、あるいはユーザーがいるなら尋ねて：\n\n- **「このロジック \u002F ステートモデルは妥当か？」** → [LOGIC.md](LOGIC.md)。紙の上では判断しづらいケースにステートマシンを通せる、小さな対話型ターミナルアプリを作る。\n- **「これはどう見えるべきか？」** → [UI.md](UI.md)。1 つのルート上に大胆に異なる複数の UI バリエーションを生成し、URL の検索パラメータとフローティングボトムバーで切り替えられるようにする。\n\n2 つの分岐が生む成果物はまったく違う — ここを間違えるとプロトタイプ全体が無駄になる。疑問が本当に曖昧でユーザーにも連絡がつかない場合は、周辺のコードにより合う方をデフォルトにし（バックエンドのモジュール → ロジック、ページやコンポーネント → UI）、その前提をプロトタイプの先頭に明記する。\n\n## 両分岐に共通のルール\n\n1. **初日から使い捨てであり、そうと明記されていること。** プロトタイプのコードは実際に使われる場所の近く（プロトタイプ対象のモジュールやページの隣）に置いて文脈を分かりやすくする — ただし、通りすがりの読者にもプロトタイプであって本番コードではないと分かる名前を付ける。使い捨ての UI ルートには、プロジェクト既存のルーティング規約に従うこと。新しいトップレベル構造を発明しない。\n2. **1 コマンドで実行できること。** プロジェクト既存のタスクランナーが使えるもの — `pnpm \u003Cname>`、`python \u003Cpath>`、`bun \u003Cpath>` など。ユーザーが何も考えずに起動できなければならない。\n3. **デフォルトで永続化なし。** 状態はメモリに置く。永続化はプロトタイプが_検証する_対象であって、依存する対象ではない。疑問がデータベースを明示的に含む場合は、「PROTOTYPE — 消してよし」と分かる名前のスクラッチ DB かローカルファイルを使う。\n4. **磨き込みはしない。** テストなし、プロトタイプを_動かす_のに必要な分を超えるエラーハンドリングなし、抽象化なし。要点は素早く何かを学んで、捨てることだ。\n5. **状態を可視化する。** すべてのアクションの後（ロジック）またはバリアント切り替えのたび（UI）に、関連する状態の全体を出力・描画し、何が変わったかユーザーに見えるようにする。\n6. **終わったら削除するか吸収する。** プロトタイプが疑問に答えたら、削除するか、検証済みの決定を本物のコードに畳み込む — リポジトリに放置して腐らせない。\n\n## 完了したら\n\nプロトタイプから残す価値があるのは_答え_だけだ。それが答えていた疑問とともに、永続的な場所（コミットメッセージ、ADR、Issue、あるいはプロトタイプの隣の `NOTES.md`）に記録する。ユーザーがいるなら、その記録は短い会話で済む。いないなら、プレースホルダーを残しておき、プロトタイプを削除する前に本人（または次のパスの自分）が結論を書き込めるようにする。\n",{"name":5,"description":7},"main","7d7373bc5573e8ea335bda7a1c38524ae624267f","skills\u002Fengineering\u002Fprototype","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor","https:\u002F\u002Fgithub.com\u002Flove-dabimas","2026-11-10 10:58:01",{"source":8,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add love-dabimas\u002Fdabimas-factor --skill prototype",{"tool":36,"command":37},"bunx","bunx skills add love-dabimas\u002Fdabimas-factor --skill prototype",{"tool":39,"command":40},"pnpm","pnpm dlx skills add love-dabimas\u002Fdabimas-factor --skill prototype","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fprototype\u002FSKILL.md",true,[44,50],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"LOGIC.md","REFERENCE","参考文档",7378,"https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fprototype\u002FLOGIC.md",{"path":51,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":52,"sourceHtmlUrl":53},"UI.md",8703,"https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fprototype\u002FUI.md",[55,63,71,80,91,105],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":19},"01M71AE2GF6PEQF66WEBJEFK9J","handoff","現在の会話を、別のエージェントが引き継げる引き継ぎドキュメントに圧縮する。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fhandoff\u002FSKILL.md",[],[57,62],"true",{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":19},"01M71AE1KHVHJK399D9YFPK25T","grilling","計画や設計についてユーザーを徹底的にインタビューする。作る前に計画をストレステストしたいとき、または「grill」「詰めて」「壁打ちして」等のトリガーフレーズが使われたときに使う。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrilling\u002FSKILL.md",[],[65,70],"grill",{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M71AE04AN4AY0S13FYQ8DD5P","grill-me","計画や設計を研ぎ澄ますための徹底的なインタビュー。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrill-me\u002FSKILL.md",[],[78,70,79,62],"me","grill me",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M71ADXVZS3N8DD4QB9CC5NBK","dabifaku-manual","統合版ダビふぁくのnote向け取扱説明書(note-article\u002F配下)を作成・更新する。ユーザーが「取説」「マニュアル」「note記事」の作成・更新、仕様変更のマニュアルへの反映、スクショの撮り直しを求めたときに使う。影山優佳さん風の文体ガイドとスクリーンショット自動撮影スクリプトを含む。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fdabifaku-manual\u002FSKILL.md",[],[87,88,89,90],"dabifaku manual","manual","article","note",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":19},"01M71ADV895JA69KJJJ0Z0QTW7","codex-implement","実装作業を OpenAI Codex に委譲しつつ、Sonnet\u002FOpus が自分で実装するのと同等の品質を担保する。Claude が設計して作業指示書を書き、別セッションの Codex が実装し、Claude が検収する。ユーザーが「Codexにやらせて」「Codexと分担して」「Codexに依頼して」「Codex用の指示書を作って」と言ったとき（依頼モード）、および「Codexが終わった」「Codexの実装を検収・レビューして」と言ったとき（検収モード）に必ず使う。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fpersonal\u002Fcodex-implement\u002FSKILL.md",[],[98,99,100,101,102,103,104],"codex","implement","codex implement","opus","sonnet","openai codex","openai",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":19},"01M71ADT7H1BK92WRHTPDQRV0K","tdd","テスト駆動開発（TDD）。ユーザーがテストファーストで機能開発やバグ修正をしたいとき、「red-green-refactor」に言及したとき、または統合テストを書きたいときに使う。","https:\u002F\u002Fgithub.com\u002Flove-dabimas\u002Fdabimas-factor\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Ftdd\u002FSKILL.md",[],[107,112,113,114,115],"red","green","red-green-refactor","refactor"]