はじめに
helm-secretsというOSSにバグ報告しました。
https://github.com/jkroepke/helm-secrets/issues/737
その後、指摘通りの修正がマージされて、v4.7.6というバージョンでリリースされました。
https://github.com/jkroepke/helm-secrets/releases/tag/v4.7.6
Claude Codeを使ってhelm-secretsというOSSにバグを報告したので、そのやり方をメモしておきます。
問題を発見したきっかけ
helm v4でhelm-secrets v4.7.5がうまくインストールできないという事象を調査していました。
その原因は、helm v3で使えていた helm plugin install の --version オプションがhelm v4では使えず、tgzなどのファイルを直接指定するインストール方法に変わったことが原因でした。
推奨 (recommend) のインストール方法については、helm-secretsのInstallationに記載されていました。
https://github.com/jkroepke/helm-secrets/wiki/Installation#install-a-specific-version-recommend
上記の推奨 (recommend) のインストール方法でインストールした後に、動作確認のためにバージョンを表示しました。
すると、以下のようにバージョン情報に加えて、ロングオプションの説明も表示されしまいました。
❯ helm secrets -v
4.7.5
--version -v Display version of helm-secrets
これでも期待するバージョンを確認することはできますが、余計なオプションの解説まで出力されると、スクリプトへ組み込んだ際に誤動作したり、余計な考慮をしないといけないので面倒です。
ということで、バグ報告することに決めました。
問題のある箇所の特定
この問題の調査対象について考えました。
helm-secretsは言わずもがなですが、呼び出し側であるhelm側の実装もみないとちゃんとした原因がわからないと予想しました。
従って、以下の2つのリポジトリをローカルにgit cloneして調査することにしました。
https://github.com/helm/helm
https://github.com/jkroepke/helm-secrets
この2つのリポジトリに対して、Claude Codeで調査をしていきました。
するとすぐに問題のある箇所を指摘をしてきました。
以下はv4.7.5のソースで、version.shでplugin.yamlから version という文字列をgrepして、cutコマンドで一部を切り取って標準出力に出力しています。
https://github.com/jkroepke/helm-secrets/blob/cf1a963e602275d53a547306a536829bff2cf038/scripts/commands/version.sh#L6
最初はOpus 4.6を使っていたのですが1Mのコンテキストにひっかかりエラーになったので、途中からSonnet 4.6に切り替えました。
動作確認
Claude Codeが、最初はmacOS 26.4にあるcutがlinux等のcutと違うので誤作動しているのでは?という指摘をしてきました。
そうであるならば、Linuxではちゃんと動くだろうということで、自宅のUbuntu 24.04で動作確認しました。
すると、問題が再現したので、cutの仕様違いは原因ではありません。
その結果もClaude Codeに入力しました。
結果的にhelm v4でplugin.yamlがcli v1という仕様に対応して、longHelpフィールドに --version の説明が追加されるようになりました。
https://github.com/jkroepke/helm-secrets/blob/cf1a963e602275d53a547306a536829bff2cf038/plugins/helm-secrets-cli/plugin.yaml#L33
従って、version という文字列でgrepするとlongHelpフィールドの説明にも一致してしまい、今回の事象が発生することがわかりました。
Issueの下書きを作成
原因まで判明したところで、Issueを作成することにしました。
自分は英語が得意でないし、そこまで時間もかけたくなかったので、調査のセッションでGitHubのIssueの下書きまで作成してもらいました。
コンテキストが足りなかったり見栄えが悪いところは適宜修正して、helm-secretsにIssueを発行しました。
https://github.com/jkroepke/helm-secrets/issues/737
なぜPull Requestを作成しなかったのか
Issueで報告した通り、 version ではなく version: でgrepするという、単純に : を足すだけで修正できる見込みは立っていました。
しかし、そもそもplugin.yamlの書き方が良くない場合はそちらを修正することになるのではと考えました。
あくまで自分が見ていたのは helm secrets -v の不具合の影響箇所だけであり、helm-secrets全体としてこうあるべき、みたいな意見は持っていませんでした。
従って、バグ報告に留めました。
ですが、実際に修正されたPRを見ると、提案した修正そのもの (バージョンアップに伴う修正箇所もありますが) になっていました。
https://github.com/jkroepke/helm-secrets/pull/738
深読みしすぎたかもなぁと若干後悔しています。
最後に
Claude Codeを活用することで、helm-secretsというOSSの問題調査からバグ報告までできました。
ポイントとしては、Claude Codeで問題調査が早くできるからといって、調査した結果を鵜呑みにしてそのままGitHub Issueに投げるのではなく、自分でも確認して納得のいった状態で報告することが大事かなと。
何はともあれ自分のIssueがきっかけで1つBugが修正されて、世界がちょっとだけ良くなったので良しとします。