Claude Code にオレたち流のコードを書かせる(中編)— 組織のルールを共有する
요약
본 기술 기사는 Claude Code를 활용하여 조직 전체의 코딩 규칙을 체계적으로 관리하고 적용하는 워크플로우를 소개합니다. 'extract-rules'로 개별 프로젝트의 규칙을 추출한 후, 'merge-rules' 기능을 통해 여러 프로젝트의 규칙을 통합하여 조직 공통 표준(Principles)과 패턴을 생성할 수 있습니다. 최종적으로 'apply-rules'를 사용해 이 공통 규칙 세트를 신규 및 기존 프로젝트에 쉽게 적용함으로써, 팀 전체가 일관된 코딩 스타일을 유지하도록 돕습니다.
핵심 포인트
- **3단계 워크플로우:** `extract-rules` (개별 추출) $ ightarrow$ `merge-rules` (공통 통합) $ ightarrow$ `apply-rules` (전사 적용)의 체계적인 규칙 관리 시스템을 구축했습니다.
- **규칙 자동 승격(Promotion):** 여러 프로젝트에서 공통적으로 사용되는 로컬 패턴(`.local.md`)은 자동으로 조직 공통 표준으로 격상되어 일관성을 높입니다.
- **지능형 규칙 적용:** `apply-rules`는 기술 스택(Gemfile, package.json 등)을 자동 감지하고, 모호한 부분에 대해서는 사용자에게 인터랙티브하게 확인을 요청하여 오류를 최소화합니다.
- **프로젝트 독립성 유지:** 조직 공통 규칙을 적용하더라도 기존 프로젝트의 고유한 도메인 지식(`.local.md`)은 보호되어 충돌을 방지합니다.
- **확장 가능성:** 이 시스템은 코딩 규칙 관리(Rule Management)를 자동화하여, 개발팀이 일관된 품질과 스타일을 유지하며 협업할 수 있는 기반을 마련했습니다.
この記事は Claude on SonicGarden の記事です。ソニックガーデンのプログラマが、Claude Code の活用について書いています。
#claude_on_sonicgarden
##きっかけ
前編で紹介した extract-rules で各プロジェクトのルールを抽出できるようになりました。
せっかく各プロジェクトのルールを抽出できたので、これをいい感じにマージしたらオレ流さらにはオレたち流のルールの完成なのでは?
それを会社全体で共有できればみんなが Claude Code にいい感じのコードを書いてもらえるのでは?と思い、共通ルールを一元管理して配布できるスキルを作りました。
##全体像
- extract-rules: 各プロジェクトからルールを抽出(前編) -
- merge-rules: 複数プロジェクトのルールを統合して組織共通ルールセットを作成 -
- apply-rules: 組織共通ルールを個々のプロジェクトに適用
前編で触れた「Principles(.md)と Project-specific patterns(.local.md)の分離」がここで効いてきます。
| ファイル | 役割 | merge-rulesでの扱い |
|---|---|---|
*.md | ポータブルな原則 | マージ対象 |
*.local.md | プロジェクト固有パターン | 昇格候補 |
*.examples.md | コード例 | ルールに追従してマージ |
merge-rules
/merge-rules
設定ファイルにマージ元のプロジェクトを指定しておきます。
---
projects:
...
Principles のマージ
各プロジェクトの ## Principles を集めて統合します。同名の原則はヒント(括弧内のキーワード)を和集合で統合。意味が異なる場合は両方保持してレポートで通知してくれます。
.local.md パターンの昇格
各プロジェクトの .local.md に書かれた「プロジェクト固有」のパターンでも、複数プロジェクトで共通して使われているなら、それはもう組織共通のパターンだよねということで、ポータブルなルールに昇格(promote)させます。
promote_threshold: 0.5 なら、プロジェクトが 3 つの場合、2 つ以上で見られるパターンが昇格対象です。
- プロジェクト A: ✅
- プロジェクト B: ✅
...
昇格されなかったパターンもレポートに出るので、「これは昇格させたほうがよくない?」みたいな判断材料になります。
ちなみに、プロジェクトによって rails-controller.md だったり rails-controllers.md だったりする揺れも自動で正規化してくれます。
apply-rules
/apply-rules ~/org-rules/.claude/rules
/apply-rules --dry-run # source を設定ファイルで指定済みの場合
GitHub URL またはローカルパスでソースを指定します。設定ファイル(.claude/apply-rules.local.md)に書いておけば引数なしでも実行できます。
Tech Stack 自動検出
Gemfile、package.json などからプロジェクトの技術スタックをベストエフォートで検出して、関連しそうなルールを絞り込みます。判断しきれないもの(未検出のインテグレーション等)は後述のインタラクティブな確認で聞いてきてくれます。
インタラクティブな解決
自動で判断できないところは聞いてきてくれます。
> 以下のインテグレーションルールは検出されませんでした。適用しますか?
> 1. integrations/rails-pundit — 認可ライブラリ Pundit のルール
> 2. integrations/rails-good-job — ジョブキュー GoodJob のルール
...
同名の原則で内容が異なる場合も、組織ルールを採用するか、プロジェクトのを維持するか、両方保持するかを選べます。
.local.md の保護
既存の .local.md の内容は基本的に変更・削除しません。プロジェクト固有のドメイン知識が組織ルールの適用で消えたら困るので。
適用後、extract-rules/merge-rules の規約に沿わないファイルがあれば検出してマイグレーション計画も提案してくれます。
使ってみて
- 今までなんとなくみんなの頭の中にあったオレたち流がルールによって明確になった
- いいコードの方向性は大体一緒だけど、細かい好みや宗派の違いはあるので、そのへんを考慮してルールを取捨選択したほうがみんな幸せになれそう
/apply-rulesで新規プロジェクトにもオレたち流ルールをサクッと持ってくれるとはとても便利
ただ、ルールを適用しただけでは Claude Code にルールを無視されることも普通にあります。これは次回の後編で対策します。
おわりに
extract-rules → merge-rules
→ apply-rules
3 つの機能で、ルールの 관리가 조직 레벨에서 이루어졌습니다.
다음 번 후편에서는, 실제 규칙이 지켜지고 있는지 확인하는 rules-review
에 대해 소개합니다.
이번에 소개한 스킬은 다음 리포지토리에서 공개하고 있습니다.
hiroro-work/claude-plugins
이 기사는 Zenn/Qiita 에 크로스 포스트 하고 있습니다
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기