propose-tech-updates

今いるリポジトリを多角的に調べ、実際に役立つ技術改善だけを提案する。依存の更新だけでなく、CI の所要時間・記法の揺れ・検査されていない領域・規約と実態の乖離まで見て、一次情報(公式ブログ・GitHub Releases・RFC)と照らす。ユーザーが「技術提案して」「最近の動向を踏まえて何かある?」「/propose-tech-updates」等を指示したときに使う。

SKILL.md

GitHub

今いるリポジトリに実際に役立つ改善だけを提案します。「新しいものの紹介」ではなく、このコードベースのどこがどう変わるかまで書けたものだけを出します。

依存の更新だけを見るスキルではありません。 提案の多くは、外の新しさではなく内側の課題から出てきます。

該当が無ければ「今回は無し」と答えて終わります。 無理に絞り出すと、本当に役立つ提案が埋もれます。

進め方

1. 現状を読む(推測で書かない)

バージョンも件数も、必ず実物から取る。 記憶にある値は古くなっています。

gh repo view --json name -q .name        # どのリポジトリにいるか
cat package.json                          # 依存とスクリプト
ls apps packages 2>/dev/null              # モノレポなら構成
見るもの なぜ
各 package.json の依存 提案の可否がここで決まる
ビルド・テスト・lint の設定 何をどう検査しているか
CI のワークフロー どの検査が CI に入っていて、何が入っていないか
規約ドキュメント docs/ や CLAUDE.md。技術方針が書かれていることがある
既存の Issue / PR gh issue list --state all / gh pr list --state all

規約に反する提案をしない。 「このアプリではキャッシュライブラリを使わない」のような方針があれば、それに反する提案は最初から候補外です。

2. 4つの観点を並列で調べる

調べ方は mattpocock-skills の research に従う(公式のドキュメント・ソース・仕様に当たり、主張ごとに出典を添える)。research はメモをリポジトリへ書き出すが、ここでは書き出さず、出典は各観点の結果に添える。

引数で観点が指定されていればそれだけを、無ければ全部を見ます。

surveyor を使えるなら、観点ごとに1つずつ起動して並列に走らせる。 読む量が多く結論が短い作業なので、直列だと待ち時間が積み上がります。使えない環境では自分で順に見ます。

他のサブエージェントは自律起動しない。 surveyor だけが探し方とコマンドと件数を返す契約を持っており、返ってきた結論を検算できます。検算できない相手に投げると、出てきたものを信じるしかなくなります。

観点 引数 何を探すか
依存 deps 破壊的変更・非推奨化・使っていない新機能
CI ci 所要時間・失敗の傾向・検査されていない領域
記法 style 同じ目的を達する複数の書き方・規約と実態の乖離
テスト test 検証されていない分岐・壊れやすいテスト・実行時間

依存を調べる

一次情報を優先し、二次記事は裏取りにだけ使います。

情報源 引き方
GitHub Releases gh release list --repo <owner>/<repo> --limit 10
リリースの本文 gh api repos/<owner>/<repo>/releases/tags/<tag> --jq .body
Issue / Discussion / RFC 破壊的変更はリリースノートより先にここで議論される
公式ドキュメント・移行ガイド /context7-mcp。ライブラリ名から最新の文書を引く
公式ブログ・リリースのページ /ax で開く。本文が描画を待つページは、verify_the_check_worked.md の手順で Playwright から読む
補助 WebSearch。気になった話題の裏を取る

「メジャーが上がれば速くなる」と思い込まない。 性能改善が入っているかは、リリースノートを perf / faster / speed で引いて確かめます。謳われていないなら速くなりません。

調べる先は手順1で読んだ依存から決める。 使っていないものを調べても意味がありません。

CI を調べる

履歴は実データで引けます。 体感ではなく数字で見ます。

gh run list --workflow "<name>" --limit 20 --json databaseId,conclusion,createdAt,updatedAt
見るもの 何が分かるか
所要時間の分布 どのワークフローが律速か。平均ではなく最遅を見る
失敗の傾向 同じジョブが繰り返し落ちていないか。不安定なテストが無いか
検査の穴 ローカルで走るのに CI に無いもの。その逆も
キャッシュが当たっているか Cached: N cached が出ているか

記法を調べる

同じ目的を達する書き方が複数あると、次に書く人が迷います。

探すもの 例
同義の別表記 同じ処理に2つの名前・2つの書き方が併存している
規約と実態の乖離 規約に書いてあるのに守られていない。逆に、実態が規約より進んでいる
lint で拾えるのに拾っていない 手で直している違反が、ルール1行で防げないか

件数を数えてから提案する。 1箇所だけなら規約にする価値はありません。

テストを調べる

見るもの 何が分かるか
実行時間の内訳 セットアップと本体のどちらが重いか
落ちやすいテスト CI の履歴で繰り返し落ちているもの
検証の薄い領域 分岐はあるがテストが無いところ

3. 測る(速さを提案するなら必須)

「遅い」「速くなる」は測らずに書かない。

測るもの どう測るか
CI gh run list の createdAt と updatedAt の差。3件以上の平均
手元のビルド・テスト 実際に走らせる。キャッシュを捨てて3回、平均を取る

改善案を出すなら、前後を比べる( base_records_on_measurements.md の「改善を主張するなら、前と後を並べる」)。

4. 3つの型に当てはまるものだけを残す

型 中身
1. 活かせていない 今あるもの(ライブラリ・ツール・設定)に、使っていない機能がある
2. 先回りできる 破壊的変更・非推奨化が来ている。今なら安く対応できる
3. 課題を解く 手順2で見つけた実際の課題を、別の選択肢が解く

主な対象は3番目です。 手順2で課題を見つけていないなら、この型の提案は出せません。

5. 落とすもの

  • 規約・技術方針に反するもの
  • 実際に困っていない問題への対処
  • 既に Issue や PR になっているもの
  • 流行っているだけで、このリポジトリでは役に立たないもの
  • 測っていない速度の主張

6. 出す

1提案につき、次の4点を書く。 どれか1つでも書けないなら、その提案は落とします。

項目 中身
何が問題か / 何が変わったか 課題なら実測値、更新なら一次情報へのリンク
どこに影響するか ファイルパスと現在の値を実際に読んで書く
コスト 入れる場合の作業量。入れない場合に何が起きるか
推奨 入れる / 見送る / 様子を見る と、その理由

3件を超えて出さない。 多いと読まれません。

最後に調べた範囲(観点ごとに見た情報源と本数)と、提案しなかった理由を簡潔に添えます。何を見ていないかが分かると、次に自分で調べる場所が決まります。

出力の目安

  • 該当なし: 観点ごとに1行 + 調べた範囲。3〜5行
  • 該当あり: 1提案につき表1つか5行程度。3件まで
  • Issue にするかはユーザーが決める。勝手に作らない

やってはいけないこと

  • 依存の更新だけを見て終えること。提案の多くは内側の課題から出る
  • バージョンや件数を記憶で書くこと。必ず実物を読む
  • 測らずに速度を語ること。「速くなるはず」は提案ではない
  • メジャー更新を性能改善と思い込むこと。リリースノートで確かめる
  • 規約ドキュメントを読まずに提案すること
  • 既存の Issue / PR を確認せずに出すこと。同じ提案が毎回積み上がる
  • 無理に提案を作ること。該当が無ければ「無し」でよい
  • 3件を超えて出すこと
  • Issue や PR を勝手に作ること。提案までが責務
  • コードを変更すること。検証のための一時的な変更も、必ず元へ戻す

関連

  • verify_before_asserting.md (断定の前に裏を取る): バージョンも「非推奨」も「速くなる」も裏取りの対象
  • write_for_installed_versions.md (入っているバージョンで書く): あちらは書くときにどのバージョンへ合わせるか、本スキルはバージョンを上げるべきかの判断
  • /resolve-renovate-pr (renovate の PR を仕上げる): あちらは PR が出た後、本スキルはPR が無い段階で何をすべきか決める。依存を上げたいだけなら renovate が拾うので、本スキルは「renovate が拾わないもの」を扱う
  • concise_first_then_detail.md (簡潔に): 提案も結論から。3件までに絞るのは同じ理由