coding-ruleslisted
Install: claude install-skill kimny1143/claude-code-template
# coding-rules - コーディング規約
プロジェクト共通のコーディングルール。
---
## 1. TypeScript
### 型定義
```typescript
// ✅ 明示的な型定義
interface User {
id: string;
email: string;
name: string;
createdAt: Date;
}
// ✅ 型推論が明確な場合は省略OK
const users = await repository.findAll(); // 戻り値の型は関数から推論
// ❌ any は使わない
const data: any = response.json();
// ✅ unknown を使って安全に処理
const data: unknown = await response.json();
if (isUser(data)) {
console.log(data.email);
}
```
### Null/Undefined
```typescript
// ✅ Optional chaining
const email = user?.profile?.email;
// ✅ Nullish coalescing
const name = user.name ?? 'Anonymous';
// ❌ 非推奨
const name = user.name || 'Anonymous'; // 空文字もfalsy
```
---
## 2. インポート順序
```typescript
// 1. 外部ライブラリ
import { useState } from 'react';
import { z } from 'zod';
// 2. 内部モジュール(エイリアス)
import { db } from '@/db';
import { User } from '@/types';
// 3. 相対インポート
import { helper } from './utils';
import styles from './styles.module.css';
```
---
## 3. 命名規則
| 種類 | 規則 | 例 |
|------|------|-----|
| 変数・関数 | camelCase | `getUserById`, `isActive` |
| 定数 | UPPER_SNAKE_CASE | `MAX_RETRY_COUNT` |
| クラス・型 | PascalCase | `UserService`, `CreateUserInput` |
| ファイル | kebab-case | `user-service.ts` |
| Reactコンポーネント | PascalCase | `UserCard.tsx` |
| 環境変数 | UPPER_SNAKE_CASE | `DATABASE_URL` |
### Boolean命名
```typescript
// ✅ is/has/can/should プレフィックス
const isActive = true;
const hasPermission = user.role === 'admin';
const canEdit = isOwner || isAdmin;
const shouldRefetch = isStale && !isLoa