codebase-summarizer について
開発者向けにリポジトリを分析し、アーキテクチャ文書を作成するスキルです。プロジェクト構成、エントリーポイント、データフロー、図、作業別ガイドをまとめます。
主な機能
- 01リポジトリ構成をスキャン
- 02フレームワークとアーキテクチャパターンを特定
- 03エントリーポイントとデータフローを整理
- 04モジュールと重要ファイルを説明
- 05Mermaid 図を生成
- 06一般的な作業のガイドを作成
活用シーン
- 01不慣れなコードベースの開発者オンボーディング
- 02リポジトリのアーキテクチャ文書を作成
- 03日常的なコード変更のガイドを作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill codebase-summarizerインストール後、Claude Code で/codebase-summarizerを入力して読み込まれたか確認します。
詳細
コードベースの概要
リポジトリを分析し、包括的なアーキテクチャドキュメントを生成します。
コアワークフロー
- 構造をスキャンする:フォルダーツリーとファイル構成を再帰的に分析します
- パターンを特定する:フレームワーク、アーキテクチャスタイル、主要なディレクトリを検出します
- エントリーポイントを把握する:メインファイル、ルート、API、CLI コマンドを見つけます
- データフローを追跡する:リクエストをレイヤー(コントローラー → サービス → モデル)に沿って追跡します
- モジュールをドキュメント化する:各ディレクトリの目的と責務を説明します
- ナビゲーションを作成する:一般的なタスク向けの「方法」ガイドを作成します
- 図を生成する:アーキテクチャを視覚化する Mermaid 図を追加します
ドキュメント構成
ARCHITECTURE.md テンプレート
# Architecture Overview
## System Summary
[Project Name] is a [type] application built with [stack]. It follows [architecture pattern] and handles [primary use cases].
**Tech Stack:**
- Frontend: [framework + key libraries]
- Backend: [framework + key libraries]
- Database: [database + ORM]
- Infrastructure: [hosting + CI/CD]
## High-Level Architecture
```mermaid
graph TB
Client[Client/Browser] --> API[API Layer]
API --> Services[Business Logic]
Services --> DB[(Database)]
Services --> Cache[(Redis Cache)]
API --> Queue[Message Queue]
```
プロジェクト構成
src/
├── app/ # Application entry point and routing
├── components/ # Reusable UI components
├── lib/ # Utility functions and helpers
├── services/ # Business logic layer
├── models/ # Data models and schemas
└── types/ # TypeScript type definitions
主要コンポーネント
エントリーポイント
メインアプリケーション: src/app/page.tsx
- アプリケーションのエントリーポイント
- プロバイダーとルーティングを初期化します
- グローバルエラーバウンダリーを処理します
API ルート: src/app/api/
- RESTful API エンドポイント
- 認証ミドルウェア
- リクエストの検証
コアモジュール
認証(src/services/auth/)
- ユーザーのログインと登録
- JWT トークンの管理
- OAuth2 の統合
- 依存関係:bcrypt、jsonwebtoken
ユーザー管理(src/services/users/)
- ユーザーの CRUD 操作
- プロファイル管理
- ロールベースのアクセス制御
- 依存関係:Prisma、検証ライブラリ
データレイヤー(src/models/)
- データベーススキーマ
- Prisma モデル
- クエリビルダー
- 依存関係:Prisma Client
データフロー
ユーザー登録フロー
sequenceDiagram
Client->>API: POST /api/auth/register
API->>Validation: Validate input
Validation->>Services: UserService.create()
Services->>Database: Insert user
Database-->>Services: User created
Services->>Email: Send welcome email
Services-->>API: Return JWT
API-->>Client: 201 Created
リクエストのライフサイクル
- リクエストを受信 → API ルートハンドラー(
src/app/api/[endpoint]/route.ts) - ミドルウェア → 認証、検証、レート制限
- サービスレイヤー → ビジネスロジック(
src/services/) - データレイヤー → データベースクエリ(
src/models/) - レスポンス → データを整形して返します
一般的なパターン
サービスパターン
// src/services/users/user.service.ts
export class UserService {
async findById(id: string) {
return prisma.user.findUnique({ where: { id } });
}
async create(data: CreateUserDto) {
// Validation, business logic, database operations
}
}
リポジトリパターン
// src/repositories/user.repository.ts
export class UserRepository {
async findAll() {
/* DB queries only */
}
async findById(id: string) {
/* DB queries only */
}
}
手順ガイド
新しい API エンドポイントを追加する
-
ルートファイルを作成:
src/app/api/[name]/route.tsexport async function GET(req: Request) { // Implementation } -
サービスロジックを追加:
src/services/[name].service.ts -
型を定義:
src/types/[name].ts -
テストを追加:
src/app/api/[name]/route.test.ts -
API ドキュメントを更新: OpenAPI/Swagger に記載します
新しいデータベースモデルを追加する
-
スキーマを更新:
prisma/schema.prismamodel NewModel { id String @id @default(cuid()) // fields } -
マイグレーションを実行:
npx prisma migrate dev --name add-new-model -
型を生成:
npx prisma generate -
サービスを作成:
src/services/new-model.service.ts -
CRUD ルートを追加:
src/app/api/new-model/
新しい React コンポーネントを追加する
- コンポーネントを作成:
src/components/NewComponent/NewComponent.tsx - スタイルを追加:
NewComponent.module.cssまたはインライン Tailwind - テストを作成:
NewComponent.test.tsx - ストーリーを追加:
NewComponent.stories.tsx(Storybook を使用する場合) - エクスポート:
src/components/index.tsを更新します
認証を変更する
- サービスレイヤー:
src/services/auth/auth.service.ts - ミドルウェア:
src/middleware/auth.middleware.ts - ルート:
src/app/api/auth/ - テストを更新: 認証フローが引き続き動作することを確認します
主要ファイル一覧
| ファイル | 目的 | 変更する場面 |
|---|---|---|
src/app/layout.tsx | ルートレイアウト、プロバイダー | グローバルレイアウトの変更 |
src/lib/db.ts | データベース接続 | 接続設定の変更 |
src/lib/api.ts | API クライアントの設定 | リクエストインターセプター |
src/middleware.ts | Next.js ミドルウェア | 認証、リダイレクト |
prisma/schema.prisma | データベーススキーマ | データモデルの変更 |
.env.example | 環境変数 | 設定値の追加 |
依存関係
重要な依存関係
next- React フレームワークprisma- ORM およびデータベースツールキットreact- UI ライブラリtypescript- 型安全性
主要なライブラリ
zod- スキーマ検証bcrypt- パスワードのハッシュ化jsonwebtoken- JWT の処理date-fns- 日付ユーティリティ
開発ワークフロー
- ローカル環境のセットアップ: DEVELOPMENT.md を参照してください
- 変更の実施: ブランチ作成 → 実装 → テスト → PR
- テストの実行:
pnpm test - データベースの変更: Prisma のマイグレーションワークフロー
- デプロイ: Vercel による自動デプロイ
トラブルシューティング
データベース接続エラー
- .env の DATABASE_URL を確認します
- データベースが稼働していることを確認します
npx prisma generateを実行します
スキーマ変更後の型エラー
npx prisma generateを実行します- TypeScript サーバーを再起動します
ビルドの失敗
.nextフォルダーを削除します:rm -rf .next- node_modules を削除します:
rm -rf node_modules && pnpm install
追加リソース
- API ドキュメント - エンドポイントのリファレンス
- 開発ガイド - セットアップとワークフロー
- 貢献ガイド - コード規約
- データベーススキーマ - データモデルの詳細
## Analysis Techniques
### Identify Framework
Look for telltale files:
- `next.config.js` → Next.js
- `vite.config.ts` → Vite
- `nest-cli.json` → NestJS
- `manage.py` → Django
- `Cargo.toml` → Rust
### Map Entry Points
- Frontend: `index.html`, `main.tsx`, `app.tsx`, `_app.tsx`
- Backend: `main.ts`, `server.ts`, `app.py`, `index.js`
- CLI: `cli.ts`, `__main__.py`, `main.go`
### Trace Request Flow
Follow typical paths:
1. Route/endpoint definition
2. Middleware/guards
3. Controller/handler
4. Service/business logic
5. Repository/model
6. Database query
### Module Categories
- **Core**: Essential business logic
- **Infrastructure**: Database, cache, queue
- **Utilities**: Helpers, formatters, validators
- **Features**: User-facing functionality
- **Config**: Environment, settings
## Mermaid Diagrams
### Architecture Diagram
```mermaid
graph LR
Client --> NextJS
NextJS --> API
API --> Services
Services --> Prisma
Prisma --> PostgreSQL
データフロー
sequenceDiagram
participant Client
participant API
participant Service
participant DB
Client->>API: Request
API->>Service: Process
Service->>DB: Query
DB-->>Service: Data
Service-->>API: Result
API-->>Client: Response
モジュール間の関係
graph TB
API[API Layer] --> Auth[Auth Service]
API --> Users[User Service]
Auth --> DB[(Database)]
Users --> DB
Users --> Cache[(Cache)]
ベストプラクティス
- 概要から始める: 詳細の前に概要を示します
- まず視覚化する: 複雑なフローには図を使います
- 具体的にする: 実際のファイルパスを記載します
- 例を示す: コードスニペットを含めます
- 関連ドキュメントにリンクする: 他のドキュメントを参照します
- 最新の状態に保つ: アーキテクチャの進化に合わせて更新します
- 開発者向けにする: オンボーディングや日常的な利用を想定して記述します
出力チェックリスト
すべてのコードベースの概要に、以下を含めてください。
- システム概要と技術スタック
- 高レベルのアーキテクチャ図
- プロジェクト構造の説明
- エントリーポイントの特定
- モジュール/ディレクトリの目的
- データフロー図
- 一般的なパターンの文書化
- 一般的なタスクの「方法」ガイド
- 主要ファイルのリファレンステーブル
- 依存関係の説明
- トラブルシューティングのセクション
コメント
Markdown 対応