Copilot - kocya-dev/note GitHub Wiki
例1
このリポジトリGithub actionsのカスタムアクションです。
設定ファイルを元に、PRやIssue発行の内容を検知してTeamsに通知を送信する機能を持っています。
## 要求
現在変更があったファイルを通知する機能があります。
これを特定の拡張子だけ通知するフィルタリング機能を搭載してください。
## 仕様
- フィルタリングの仕様は、actionsのconfigパラメータで指定されたパスにあるconfigファイルで受け取ります。
configファイルの例は"notify-config.json"を参考にしてください。
- フィルタを有効にするかどうかは、configのfilter.extensionパラメータに指定された拡張子の配列を参照します。
- パラメータが指定されていない、もしくは空の配列の場合はフィルタリングしません
- パラメータが指定されており、拡張子の配列が指定されていれば、指定された拡張子だけを変更対象として通知します。
- 通知する変更ファイルはcontents.jsのgenerateChangedFilesStringメソッドで受け取り、表示可能な数や形式に変換しています。
フィルタリングするならばこのメソッドで実行してください。
## 完成基準
- フィルタリングが正しく動作するかをgenerateChangedFilesStringに対する入出力を使ったテストを実装し、テストがパスすること
- configファイルに filter.extensionパラメータを指定した時にフィルタが有効になること
- linterが正常に実行完了すること
- フォーマッタが実行され正常に完了すること
## その他
- テストの実行: npm run test
- liinter実行: npm run lint
- フォーマッタ実行: format:write
- 補足
- リポジトリ内の内容を見て、npm run all でデプロイに必要な処理まで実施してくれている。 PR発行指示を与えなかったために、コミットもせず中断した。
- 追加
このままコミットとPull Requestの発行もできたらお願いします。
現在この環境はfolkされたリポジトリです。
Pull Requestの発行先はfolk元ではなく、forkした後のリポジトリにお願いします。
MCPサーバーがあればMCPサーバー、なければgithub cliを使おうとしていた。
例2
このリポジトリGithub actionsのカスタムアクションです。
設定ファイルを元に、PRやIssue発行の内容を検知してTeamsに通知を送信する機能を持っています。
## 要求
現在変更があったファイルを通知する機能があります。
mkdocsなど、markdownから静的サイトを生成するフレームワークなどを利用してgithub pagesで公開する際、
ページを構成するファイル(*.md) などが変更された場合はTeamsのメッセージ上ではリンクとして扱います。
## 仕様
- ファイル変更をリンクに変換する仕様は、actionsのconfigパラメータで指定されたパスにあるconfigファイルで受け取ります。
configファイルの例は"notify-config.json"を参考にしてください。
- 追加されるパラメータとその役割
- mkdocs.baseUrl
- URLが指定されると、ファイル変更通知をリンクにします
- mkdocs.rootDir
- mkdocsで静的サイトを生成するファイルを格納するディレクトリを指定します
- 変更ファイルをリンクにする際の仕様
- 変更ファイルを表示文字列{displayPath}として、リンク先を{linkUrl}とすると、
Teamsに通知する文字列はmarkdownのため {displayPath}で表現できます
- linkUrlは、{config.mkdocs.baseUrl}/変更されたmarkdownファイルパスから拡張子と{config.mkdocs.rootDir}を除いたパス
- 変更されたファイルパスのセパレータは`\`が使用されますが、URLに変換する際はセパレータを`/`にしてください
- e.g.
- baseUrl = https://hogehge
- rootDir = docs
- 変更されたmarkdownファイルパス = docs/test/sample.md
- linkUrl = https://hogehge/test/sample
- 関連する処理
- 通知する変更ファイルはcontents.jsのgenerateChangedFilesStringメソッドで受け取り、表示可能な数や形式に変換しています。
## 完成基準
- リンクの生成が仕様通りに生成され、テストがパスすること
- configファイルに mkdocs.baseUrlとmkdocs.rootDirパラメータを指定した時に変更ファイルパスがurlへのリンクを持った文字列に変換されること
- linterが正常に実行完了すること
- フォーマッタが実行され正常に完了すること
## その他
- テストの実行: npm run test
- liinter実行: npm run lint
- フォーマッタ実行: format:write
例3
予めCopilotと相談して、仕様書、コーディング規約、テスト記述規約を作成しておく。
検証用のデータを予め作成しておきバリエーションを増やす。
./data/monthlyディレクトリ以下にあるactionsのcsvファイルについて、ダミーデータを作成してください
- csvファイルの仕様はwebapp-spec.mdを参照してください
- 2024年の1月~12月、2025年の1~6月のデータを作成してください
- 既にあるデータを参考にしてください。
- time, costの値は最も大きいもので50, 75.0です
- time, costの値は最も小さいもので0, 0です
- 月の途中で人がいなくなったり、追加されることもあります
内容を確認し、更にバリエーションを増やす。
作成してもらったデータに、同一リポジトリに複数のユーザーが割り当てられているケースを追加してください
計画遂行方法の相談
仕様書内に開発計画が含まれていますが、この進め方の相談です。
この開発計画はCopilotにお願いする予定ですが、1回の依頼で済みますでしょうか。
それとも複数回に分けてお願いした方が良いでしょうか。
分割するべきかどうか回答ください。
また分割した場合はどうやって前の指示を請け負った結果を、次の指示を請け負う人に伝えれば良いか、提案をください。
計画進捗資料を作成
では各フェーズごとに分割して作業をお願いするために、以下の準備をお願いします。
- REDME.mdを作成し、各フェーズごとの開発状況を示せるようにしてください
- REDME.md内で、各フェーズ間の引継ぎドキュメントを記載できるスタブの章を作成してください
作業開始
Webアプリケーションの開発を開始します。
webapp-spec.md, README.mdなどを参考にして、Phase1として定義されている作業を実施し、Pull Requestを発行してください。
また、作業の結果をREADME.mdに従い更新してください。
テスト解消でループしていたので停止
テストは通らなくて良いのでphase1の作業を完了させてください
これまでの成果をコミットしてpull requestを発行してください。
ただし、会話内容がループしているようですので、全文を取り込まず前半の指示とその結果のやり取りを要約してください。
作業再開
Webアプリケーションの開発を進めます。
新しくブランチを作成し、webapp-spec.md, README.mdなどを参考にして、Phase2として定義されている作業を実施し、Pull Requestを発行してください。
作業の経過はPhase1の結果を参照してください。
また、作業の結果をREADME.mdに従い更新してください。
なお、ユニットテストで `too many open files, open react`とエラーが出る箇所は無視して構いません。
コンテキスト長すぎてループしてきたのでリセット > 再開
Phase2のビルド、テスト作成まで進んでいます。
作業を再開してください。
作業再開
Webアプリケーションの開発を進めます。
以下の通り作業を開始してください。
- 新しくブランチを作成して作業をしてください
- webapp-spec.md, README.mdなどを参考に、Phase3として定義されている作業を実施してください
- 作業完了後、Pull Requestを発行してください。
- これまでの作業経過はPhase2の結果を参照してください。
- 作業の結果をREADME.mdに従い更新してください。
- ユニットテストで `too many open files, open react`とエラーが出る箇所は無視して構いません。
気になった点の修正指示
baseURLを"./"と指定して相対パス対応したい
動作確認の結果不具合修正相談 > 結局修正できず自分で調査、修正
横棒チャートのバーが表示されません。
原因を調査して考えられる修正案を提示してください
デバッグ用機能追加
ビルドする際にsourcemapを有効にしてください
動作確認の結果、エラーが出る経路があったので調査 > 結果を受けて自分で修正
#file:OverviewChart.tsx:125-127 グラフのbarにformatterを渡していますが、ここではentryにundefinedが入っています。
ここに渡されるデータはどこでどう指定していますか?
仕様変更指示
仕様変更です。カスタムツールチップに、コストの算出元となる時間、および使用容量を追加してください。
まずはREDMEとwebapp-specの内容を整理して更新してください。
Webアプリケーションの開発を進めます。
以下の通り作業を開始してください。
- 新しくブランチを作成して作業をしてください
- webapp-spec.md, README.mdなどを参考に、Phase3の`カスタムツールチップ強化`として定義されている作業を実施してください
- 作業完了後、Pull Requestを発行してください。
- 作業の結果をREADME.mdに従い更新してください。
- ユニットテストで `too many open files, open react`とエラーが出る箇所は無視して構いません。
作業再開
Webアプリケーションの開発を進めます。
以下の通り作業を開始してください。
- 新しくブランチを作成して作業をしてください
- webapp-spec.md, README.mdなどを参考に、Phase4として定義されている作業を実施してください
- 作業完了後、Pull Requestを発行してください。
- これまでの作業経過はPhase3の結果を参照してください。
- 作業の結果をREADME.mdに従い更新してください。
- ユニットテストで `too many open files, open react`とエラーが出る箇所は無視して構いません。
カバレッジの向上は止めて他の作業を進めてください
仕様変更指示
仕様変更です。
下記内容を仕様書に追記してください。
- webapp-spec.mdで定義されている現在のアプリケーションはブラウザ上で左端に表示されます。
これをブラウザ上で中央に表示されるようにしてください。
- タブ内に表示される文字列によって全体の表示幅が変わります。
- 中央1024pixの幅内に表示するようにしてください
動作確認で不備を見つけたので修正指示 > できないので自分で修正
Layoutコンポーネントは画面中央に表示されているようにできていますか?
不足点があれば指摘してください。
ブラウザで見てみると画面左端にコンテンツが寄って表示されます。
修正できそうなら対応をお願いします
開発中のwebappが1024幅固定の中央かと思ったのですが、実際には1280px固定左寄せでした。
そのため、中央固定1280pxになるよう修正しました。
現在ステージング中の変更差分を元にREADME.mdおよびwebapp-spec.mdを更新してください。
動作確認で不備を見つけたので修正指示 > 反映
表示モードとして全体概要を選択した時と、ユーザー詳細、リポジトリ詳細を選択した時で画面の幅が変化します。
これを固定幅にしたいです。
どんな方法が考えられますか?
変更した内容をwebapp-spec.mdとreadme.mdに反映してください