AgentSkillsCN

coding-standards

TypeScript/React/Next.js 的编码规范与最佳实践

SKILL.md
--- frontmatter
name: coding-standards
description: "TypeScript/React/Next.jsのコーディング規約とベストプラクティス"

Coding Standards Skill

概要

このSkillは、プロジェクトのコーディング規約を提供します。一貫性のある高品質なコードを維持し、チーム全体の開発効率を向上させることを目的とします。

基本原則

1. 可読性の重視

  • コードは書くよりも読まれることが多い
  • 明確で理解しやすいコードを書く
  • 適切な命名と構造化を心がける

2. 一貫性の保持

  • プロジェクト全体で統一されたスタイルを維持
  • 既存のコードパターンに従う
  • ツールによる自動化を活用

3. 保守性の向上

  • 変更に強いコード設計
  • 適切な分離と抽象化
  • テスタブルなコード構造

詳細ドキュメント

各カテゴリの詳細な規約は以下を参照してください:

クイックリファレンス

必須チェック項目

  • any型を使用していない(最重要)
  • 適切な型定義がされている
  • 命名規約に従っている
  • early return パターンを使用している
  • エラーハンドリングが適切に実装されている
  • 禁止事項に該当するコードがない

インポート順序

typescript
// 1. Node.js標準ライブラリ
import { readFile } from 'fs/promises';

// 2. 外部ライブラリ
import React from 'react';
import { NextRequest } from 'next/server';

// 3. 内部ライブラリ(@/から始まる)
import { Button } from '@/components/ui/button';
import { auth } from '@/lib/auth';

// 4. 相対インポート
import './styles.css';
import { localUtil } from '../utils';

スタイリング(Tailwind CSS)

typescript
// ✅ Tailwind CSSユーティリティクラスの使用
export function Card({ children }: CardProps) {
  return (
    <div className="rounded-lg bg-white p-6 shadow-md hover:shadow-lg transition-shadow">
      {children}
    </div>
  );
}

// ✅ cva によるバリアント管理
import { cva } from "class-variance-authority";

const buttonVariants = cva(
  "inline-flex items-center justify-center rounded-md font-medium transition-colors",
  {
    variants: {
      variant: {
        primary: "bg-primary text-primary-foreground hover:bg-primary/90",
        secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
      },
      size: {
        sm: "h-8 px-3 text-sm",
        md: "h-10 px-4 text-base",
        lg: "h-12 px-6 text-lg",
      },
    },
    defaultVariants: {
      variant: "primary",
      size: "md",
    },
  }
);

ツール設定

必須ツール

  1. Biome: linting と formatting
  2. TypeScript: 型チェック
  3. Husky: Git hooks
  4. lint-staged: ステージングファイルのチェック

VS Code 推奨設定

json
{
  "editor.codeActionsOnSave": {
    "source.organizeImports": true,
    "source.fixAll": true
  },
  "editor.formatOnSave": true,
  "typescript.preferences.noSemicolons": false,
  "typescript.preferences.quoteStyle": "double"
}

関連Skill・ドキュメント

  • component-design - コンポーネント設計ガイドライン
  • docs/einja/steering/development/testing-strategy.md - テスト戦略
  • docs/einja/steering/development/review-guidelines.md - コードレビューガイドライン
  • docs/einja/steering/commit-rules.md - コミットルール