7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeにオレたち流のコードを書かせる(中編)— 組織のルールを共有する

7
Posted at

この記事は Claude on SonicGarden の記事です。ソニックガーデンのプログラマが、Claude Codeの活用について書いています。#claude_on_sonicgarden

きっかけ

前編で紹介した extract-rules で各プロジェクトのルールを抽出できるようになりました。

せっかく各プロジェクトのルールを抽出できたので、これをいい感じにマージしたらオレ流さらにはオレたち流のルールの完成なのでは?

それを会社全体で共有できればみんながClaude Codeにいい感じのコードを書いてもらえるのでは?と思い、共通ルールを一元管理して配布できるスキルを作りました。


全体像

  1. extract-rules: 各プロジェクトからルールを抽出(前編
  2. merge-rules: 複数プロジェクトのルールを統合して組織共通ルールセットを作成
  3. apply-rules: 組織共通ルールを個々のプロジェクトに適用

前編で触れた「Principles(.md)とProject-specific patterns(.local.md)の分離」がここで効いてきます。

ファイル 役割 merge-rulesでの扱い
*.md ポータブルな原則 マージ対象
*.local.md プロジェクト固有パターン 昇格候補
*.examples.md コード例 ルールに追従してマージ

merge-rules

/merge-rules

設定ファイルにマージ元のプロジェクトを指定しておきます。

# .claude/merge-rules.local.md
---
projects:
  - ~/projects/frontend-app
  - ~/projects/backend-api
  - ~/projects/shared-lib
promote_threshold: 0.5
---

Principlesのマージ

各プロジェクトの ## Principles を集めて統合します。同名の原則はヒント(括弧内のキーワード)を和集合で統合。意味が異なる場合は両方保持してレポートで通知してくれます。

.local.md パターンの昇格

各プロジェクトの .local.md に書かれた「プロジェクト固有」のパターンでも、複数プロジェクトで共通して使われているなら、それはもう組織共通のパターンだよねということで、ポータブルなルールに昇格(promote)させます。

promote_threshold: 0.5 なら、プロジェクトが3つの場合、2つ以上で見られるパターンが昇格対象です。

useAuth() → { user, login, logout }
  - プロジェクトA: ✅
  - プロジェクトB: ✅
  - プロジェクトC: ❌
  → 2/3で閾値超え → ポータブルルールに昇格

昇格されなかったパターンもレポートに出るので、「これは昇格させたほうがよくない?」みたいな判断材料になります。

ちなみに、プロジェクトによって rails-controller.md だったり rails-controllers.md だったりする揺れも自動で正規化してくれます。


apply-rules

/apply-rules https://github.com/org/repo/tree/main/.claude/rules
/apply-rules ~/org-rules/.claude/rules
/apply-rules --dry-run   # sourceを設定ファイルで指定済みの場合

GitHub URLまたはローカルパスでソースを指定します。設定ファイル(.claude/apply-rules.local.md)に書いておけば引数なしでも実行できます。

Tech Stack自動検出

Gemfilepackage.json などからプロジェクトの技術スタックをベストエフォートで検出して、関連しそうなルールを絞り込みます。判断しきれないもの(未検出のインテグレーション等)は後述のインタラクティブな確認で聞いてきてくれます。

インタラクティブな解決

自動で判断できないところは聞いてきてくれます。

> 以下のインテグレーションルールは検出されませんでした。適用しますか?
> 1. integrations/rails-pundit — 認可ライブラリPunditのルール
> 2. integrations/rails-good-job — ジョブキューGoodJobのルール
>
> Options: all / none / 番号で指定

同名の原則で内容が異なる場合も、組織ルールを採用するか、プロジェクトのを維持するか、両方保持するかを選べます。

.local.md の保護

既存の .local.md の内容は基本的には変更・削除しません。プロジェクト固有のドメイン知識が組織ルールの適用で消えたら困るので。

適用後、extract-rules / merge-rules の規約に沿わないファイルがあれば検出してマイグレーション計画も提案してくれます。


使ってみて

  • 今までなんとなくみんなの頭の中にあったオレたち流がルールによって明確になった
  • いいコードの方向性は大体一緒だけど、細かい好みや宗派の違いはあるので、そのへんを考慮してルールを取捨選択したほうがみんな幸せになれそう
  • /apply-rules で新規プロジェクトにもオレたち流ルールをサクッと持ってくれるとはとても便利

ただ、ルールを適用しただけではClaude Codeにルールを無視されることも普通にあります。これは次回の後編で対策します。


おわりに

extract-rulesmerge-rulesapply-rules の3つで、ルールの管理が組織レベルで回るようになりました。

次回の後編では、ルールが実際に守られているかをチェックする rules-review について紹介します。


今回紹介したスキルは以下のリポジトリで公開しています。
hiroro-work/claude-plugins


この記事はZenn/Qiitaにクロスポストしています

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?