Claude Code Backlog Claude Code 正規表現

Claude Code v2.1.176で footerLinksRegexes という設定が追加されました。ターンの出力から正規表現にマッチした文字列を拾い、入力欄の下にクリックできるリンクバッジとして表示する汎用の仕組みです。パターンは何でもよいので、「PROJ-123」のような課題IDを登録しておくとBacklogやJiraの課題リンクが会話中に自動で出るようになり、課題を見ながらの作業がかなり楽になります。この記事ではこの使い方を例に、設定方法と制約をまとめます。

設定方法

ユーザー設定(~/.claude/settings.json)に次のように書きます。

{
  "footerLinksRegexes": [
    {
      "type": "regex",
      "pattern": "\\b(?<key>PROJ-\\d+)\\b",
      "url": "https://example.backlog.jp/view/{key}",
      "label": "{key}"
    }
  ]
}

(?<key>...) の名前付きキャプチャグループが urllabel{key} に代入される仕組みです。注意点として、この設定はユーザー設定にしか書けません。プロジェクトの .claude/settings.jsonsettings.local.json に書いても無視されます。

どこにマッチするか

正規表現は各ターンの出力全体に対して評価されます。Claudeの返答だけでなく、ツール結果——読み込んだファイルの中身や取得したWebページ——も対象です。バッジは最大5個で、新しいマッチが古いものを押し出し、/clear で全部消えます。ラベルを省略するとマッチした文字列がそのまま使われます。

制約

URLはテンプレートに書いたオリジンに固定されます。キャプチャした値はURLエンコードされてパスやクエリに埋まるだけで、リンク先のドメイン自体を変えることはできません。スキームは https/http と主要エディタのディープリンク(vscode、jetbrains など)に限られます。

もうひとつ実用上大事なのが正規表現の性能です。パターンはUIと同じスレッドで評価されるため、(a+)+ のようなネストした量指定子を書くと、入力によっては評価が終わらずセッションが固まります。素直な線形パターンに保ってください。

誤マッチを防ぐパターンの作り方

[A-Z]+-\d+ のような汎用パターンは一見便利ですが、UTF-8CVE-2018 のような文字列まで課題IDとして拾ってしまいます。ログやエラーメッセージを扱う作業では誤バッジだらけになるので、実在するプロジェクトキーを列挙する形が確実です。

"pattern": "\\b(?<key>(?:PROJ|SHOP|DEV2)-\\d+)\\b"

この形にしておくと、複数のBacklogスペースを使い分けている場合にも応用できます。キーがスペース間で重複していなければ、スペースごとにエントリを分けるだけで、それぞれ正しいドメインの課題URLに振り分けられます。

常時表示したい場合はstatusline

footerLinksRegexesは「会話に出たとき」に反応する仕組みなので、作業中の課題リンクを常に出しておきたい用途には向きません。その場合はstatuslineスクリプトで、gitブランチ名やセッション名から課題キーを拾ってURLを組み立てる方法があります。素のURLを表示しておけば、PhpStormのターミナルならCmd+クリック、macOS標準のターミナルでもCmd+ダブルクリックで開けます。statuslineの基本的な作り方は別記事にまとめています。