Claude-skill-registry code-quality-rules
実装時に遵守すべきコード品質ルール(500行ルール、固定アーキテクチャ、SOLID原則、命名規則、テストカバレッジ要件)を定義
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/code-quality-rules" ~/.claude/skills/majiayu000-claude-skill-registry-code-quality-rules && rm -rf "$T"
manifest:
skills/data/code-quality-rules/SKILL.mdsource content
コード品質ルール
本ドキュメントは、実装時に遵守すべきコード品質ルールを定義します。 すべてのエージェントはこのルールに従って実装を行います。
1. 500行ルール
1.1 ルール定義
1ファイルあたり500行を上限とします。 これはクリーンアーキテクチャ/オニオンアーキテクチャの単一責任の原則に基づきます。
| 条件 | 対応 |
|---|---|
| 500行以下 | OK |
| 500行超過 | 自動分割を実行 |
1.2 500行を超えた場合の対応
- 実装時にエージェントが自動で分割を実行
- 分割後に品質チェックを再実行
- すべて500行以下になるまで繰り返し
- 分割が技術的に困難な場合のみTODOに記録
1.3 分割の指針
| レイヤー | 分割方針 |
|---|---|
| Domain | Entity → Value Object抽出、Domain Service分離 |
| Application | UseCase分割、Query/Command分離(CQRS) |
| Infrastructure | Repository実装分割、外部サービスAdapter分離 |
| Presentation | Controller分割、DTO/Transformer分離 |
| Frontend | コンポーネント分割、カスタムHook抽出 |
1.4 例外
以下の場合は500行超過を許容:
- 自動生成ファイル(マイグレーション、型定義等)
- 設定ファイル
- テストファイル(ただし1000行を上限とする)
2. アーキテクチャ選定戦略
Adaptive Strategy: プロジェクトの特性やフレームワークに合わせて最適なアーキテクチャを選択する。 一律の「固定アーキテクチャ」強制は廃止。
2.1 優先順位(Decision Tree)
実装エージェントは以下の優先順位で採用するアーキテクチャを決定します。
- Project Definition (最優先)
または設計書(基本・詳細)に明記されたアーキテクチャ。docs/architecture.md
- Framework Convention (フレームワーク標準)
- Next.js (App Router), NestJS, Rails, Django 等、フレームワークが構造を規定している場合はそれに従う。
- 禁止: フレームワークの流儀に逆らって無理にオニオンアーキテクチャ等を適用すること。
- Recommended Patterns (デフォルト)
- 上記に該当しない場合、以下の標準パターンを採用する。
2.2 推奨パターン(Default Fallback)
プロジェクト固有の定義がない場合の標準セットです。
| 領域/規模 | 推奨パターン | プロンプト指定 | 備考 |
|---|---|---|---|
| Backend (Simple) | Layered (Controller-Service-Repository) | | 一般的なWeb API |
| Backend (Complex) | Onion Architecture + DDD | | ビジネスロジックが複雑な場合 |
| Frontend (App) | Framework Standard (e.g. Next.js App Router) | | フレームワーク推奨に従う |
| Frontend (Component) | Atomic Design | | 大規模なUIコンポーネント設計時 |
| Script/Tool | Single File / Module based | | 過剰なレイヤー化は禁止 |
2.3 プロンプト最適化ガイド(LLM事前学習活用)
選択されたアーキテクチャ名をプロンプトに含めるだけで、詳細説明は省略可能です(80-90%トークン削減)。
✅ 正しい指示の例
// Next.jsの場合 "Next.js App Router標準構成。Server ComponentsとClient Componentsを適切に分離。" // 複雑なドメインの場合 "オニオンアーキテクチャ + TDD。Domain層の依存を排除。" // 小規模ツールの場合 "シンプルなモジュール構成。過剰な抽象化は避けること。"
3. 設計原則
3.1 SOLID原則
| 原則 | 説明 | チェック項目 |
|---|---|---|
| Single Responsibility | 単一責任 | 各クラス・関数は1つの責務のみ |
| Open/Closed | 開放閉鎖 | 拡張に開き、修正に閉じている |
| Liskov Substitution | リスコフ置換 | サブタイプは親を代替可能 |
| Interface Segregation | インターフェース分離 | 必要なインターフェースのみ実装 |
| Dependency Inversion | 依存性逆転 | 抽象に依存、具象に依存しない |
3.2 その他の原則
| 原則 | 説明 |
|---|---|
| DRY | Don't Repeat Yourself(重複を避ける) |
| YAGNI | You Aren't Gonna Need It(必要になるまで作らない) |
| KISS | Keep It Simple, Stupid(シンプルに保つ) |
4. 命名規則
4.1 共通
| 対象 | 規則 | 例 |
|---|---|---|
| ファイル名 | kebab-case | |
| ディレクトリ名 | kebab-case | |
| 定数 | UPPER_SNAKE_CASE | |
4.2 バックエンド
| 対象 | 規則 | 例 |
|---|---|---|
| クラス名 | PascalCase | |
| メソッド名 | camelCase | |
| 変数名 | camelCase | |
| テーブル名 | snake_case, 複数形 | |
| カラム名 | snake_case | |
4.3 フロントエンド
| 対象 | 規則 | 例 |
|---|---|---|
| コンポーネント | PascalCase | |
| カスタムHook | camelCase, use接頭辞 | |
| 変数名 | camelCase | |
| イベントハンドラ | handle接頭辞 | |
5. テストカバレッジ要件
5.1 カバレッジ閾値
| 対象 | 閾値 |
|---|---|
| 新規コード | 80%以上 |
| 全体 | 70%以上(推奨) |
5.2 テストの種類
| 種類 | 対象 | 優先度 |
|---|---|---|
| Unit Test | ドメインロジック、ユーティリティ | 高 |
| Integration Test | API、DB連携 | 高 |
| E2E Test | ユーザーシナリオ | 中 |
6. コードフォーマット
6.1 必須ツール
| 言語/フレームワーク | Linter | Formatter |
|---|---|---|
| TypeScript | ESLint | Prettier |
| JavaScript | ESLint | Prettier |
| PHP | PHP_CodeSniffer | PHP-CS-Fixer |
| Python | Ruff / Flake8 | Black |
| Go | golangci-lint | gofmt |
6.2 コミット前チェック
以下のチェックをコミット前に実行:
- Lint(エラー0件)
- Format(差分0件)
- Type Check(エラー0件)
- Unit Test(全件パス)
7. 禁止事項
7.1 絶対禁止
| 禁止事項 | 理由 |
|---|---|
型の使用(TypeScript) | 型安全性の破壊 |
/ | 型エラーの隠蔽 |
空のcatchブロック | エラーの握りつぶし |
| 機密情報のハードコード | セキュリティリスク |
の本番コード残存 | デバッグコードの漏洩 |
| テスト削除による「修正」 | 品質の低下 |
, の残存 | 実装漏れ(リリースビルドでパニックする) |
7.2 原則禁止(例外要申請)
| 禁止事項 | 例外条件 |
|---|---|
| 新規依存パッケージの追加 | 既存で代替不可の場合のみ |
| グローバル状態の使用 | 明確な理由がある場合のみ |
| 直接DOM操作(React/Vue) | パフォーマンス上必要な場合のみ |
変更履歴
| 日付 | バージョン | 変更内容 |
|---|---|---|
| 2026-01-02 | 1.0.0 | 初版作成(ai-frameworkからの取り込み) |