APM

>Agent Skill

@mattnigh/claude-skills-linting-formatting-automation-skill-md

skilldevelopment

コード品質とフォーマット自動化の専門スキル。 ESLint、Prettier、Biome、Stylelintなどのリンターとフォーマッターのセットアップ、 設定、CI/CD統合、pre-commitフック構築、エディタ統合を提供します。 📚 リソース参照: このスキルには以下のリソースが含まれています。 必要に応じて該当するリソースを参照してください: - `.claude/skills/linting-formatting-automation/resources/eslint-config-guide.md`: ESLint設定ガイド(ルール選択、プラグイン統合、カスタムルール) - `.claude/skills/linting-formatting-automation/resources/prettier-biome-comparison.md`: Prettier vs Biome 比較(パフォーマンス、機能、移行戦略) - `.claude/skills/linting-formatting-automation/resources/pre-commit-hook-setup.md`: pre-commitフックセットアップ(husky、lint-staged統合) - `.claude/skills/linting-formatting-automation/resources/ci-cd-integration.md`: CI/CD統合ガイド(GitHub Actions、GitLab CI) - `.claude/skills/linting-formatting-automation/scripts/setup-linter.sh`: リンター自動セットアップスクリプト - `.claude/skills/linting-formatting-automation/templates/eslintrc-template.json`: ESLint設定テンプレート - `.claude/skills/linting-formatting-automation/templates/prettier-config-template.json`: Prettier設定テンプレート - `.claude/skills/linting-formatting-automation/templates

gitdocumentation
apm::install
$apm install @mattnigh/claude-skills-linting-formatting-automation-skill-md
apm::skill.md
---
name: .claude/skills/linting-formatting-automation/SKILL.md
description: |
  コード品質とフォーマット自動化の専門スキル。
  ESLint、Prettier、Biome、Stylelintなどのリンターとフォーマッターのセットアップ、
  設定、CI/CD統合、pre-commitフック構築、エディタ統合を提供します。

  📚 リソース参照:
  このスキルには以下のリソースが含まれています。
  必要に応じて該当するリソースを参照してください:

  - `.claude/skills/linting-formatting-automation/resources/eslint-config-guide.md`: ESLint設定ガイド(ルール選択、プラグイン統合、カスタムルール)
  - `.claude/skills/linting-formatting-automation/resources/prettier-biome-comparison.md`: Prettier vs Biome 比較(パフォーマンス、機能、移行戦略)
  - `.claude/skills/linting-formatting-automation/resources/pre-commit-hook-setup.md`: pre-commitフックセットアップ(husky、lint-staged統合)
  - `.claude/skills/linting-formatting-automation/resources/ci-cd-integration.md`: CI/CD統合ガイド(GitHub Actions、GitLab CI)
  - `.claude/skills/linting-formatting-automation/scripts/setup-linter.sh`: リンター自動セットアップスクリプト
  - `.claude/skills/linting-formatting-automation/templates/eslintrc-template.json`: ESLint設定テンプレート
  - `.claude/skills/linting-formatting-automation/templates/prettier-config-template.json`: Prettier設定テンプレート
  - `.claude/skills/linting-formatting-automation/templates/biome-config-template.json`: Biome設定テンプレート

  使用タイミング:
  - 新規プロジェクトのリンター/フォーマッター初期設定時
  - 既存プロジェクトのコード品質改善時
  - CI/CDパイプラインへのリント追加時
  - pre-commitフック構築時
  - ESLint → Biomeなどのツール移行時

  関連スキル:
  - `.claude/skills/prettier-integration/SKILL.md` - Prettier詳細統合
  - `.claude/skills/code-quality/SKILL.md` - コード品質基準と評価
  - `.claude/skills/github-actions-workflows/SKILL.md` - GitHub Actions CI/CD

  Use proactively when setting up linting/formatting tools,
  integrating code quality checks into CI/CD, or configuring
  pre-commit hooks for consistent code style enforcement.

version: 1.0.0
---

# リンティング・フォーマット自動化スキル

## 概要

このスキルは、コード品質を自動的に維持するためのリンティングツールと
フォーマッターの設定・統合に関する知識を提供します。
一貫したコードスタイルとエラー防止を実現します。

**主要な価値**:

- 一貫したコードスタイルの自動維持
- 潜在的なバグの早期発見
- コードレビューの効率化(スタイル議論の削減)

**対象ユーザー**:

- `.claude/agents/code-quality.md`エージェント
- フロントエンド開発者
- バックエンド開発者
- DevOpsエンジニア

## いつ使うか

### シナリオ 1: 新規プロジェクトセットアップ

**状況**: 新しいプロジェクトでコード品質ツールを設定する

**適用条件**:

- [ ] プロジェクトの言語/フレームワークが決定している
- [ ] チームのコードスタイルガイドがある(またはデフォルト使用)
- [ ] パッケージマネージャーが利用可能

**期待される成果**: 一貫したリンティング/フォーマット環境

### シナリオ 2: CI/CD統合

**状況**: プルリクエスト時に自動でコード品質をチェックしたい

**適用条件**:

- [ ] CI/CDプラットフォームが利用可能
- [ ] リンターの設定が完了している
- [ ] テストとの統合方針が決定している

**期待される成果**: 自動化されたコード品質ゲート

### シナリオ 3: ツール移行

**状況**: ESLint + Prettier から Biome に移行する等

**適用条件**:

- [ ] 移行理由が明確(パフォーマンス、設定簡素化等)
- [ ] 既存ルールの移行計画がある
- [ ] チームの合意が取れている

**期待される成果**: スムーズなツール移行と設定継承

## 主要ツール比較

### JavaScript/TypeScript

| ツール   | 用途               | 特徴                       |
| -------- | ------------------ | -------------------------- |
| ESLint   | リンティング       | 最も成熟、豊富なプラグイン |
| Prettier | フォーマッティング | オピニオネイテッド、設定少 |
| Biome    | 両方               | 高速、Rust製、設定簡素     |

### 推奨組み合わせ

```yaml
シンプル志向:
  - Biome (リンティング + フォーマッティング)
  - メリット: 設定が少ない、高速
  - デメリット: ESLintほどのプラグインエコシステムがない

成熟志向:
  - ESLint + Prettier
  - メリット: 豊富なプラグイン、カスタマイズ性
  - デメリット: 設定が複雑になりがち
```

## セットアップガイド

### ESLint + Prettier (TypeScript)

```bash
# パッケージインストール
pnpm add -D eslint prettier eslint-config-prettier \
  @typescript-eslint/parser @typescript-eslint/eslint-plugin

# 設定ファイル作成
touch eslint.config.js .prettierrc
```

**eslint.config.js** (Flat Config):

```javascript
import tseslint from "@typescript-eslint/eslint-plugin";
import tsparser from "@typescript-eslint/parser";
import prettier from "eslint-config-prettier";

export default [
  {
    files: ["**/*.ts", "**/*.tsx"],
    languageOptions: {
      parser: tsparser,
      parserOptions: {
        project: "./tsconfig.json",
      },
    },
    plugins: {
      "@typescript-eslint": tseslint,
    },
    rules: {
      ...tseslint.configs.recommended.rules,
      "@typescript-eslint/no-unused-vars": "error",
      "@typescript-eslint/explicit-function-return-type": "warn",
    },
  },
  prettier,
];
```

**.prettierrc**:

```json
{
  "semi": true,
  "singleQuote": true,
  "tabWidth": 2,
  "trailingComma": "es5",
  "printWidth": 100
}
```

### Biome (オールインワン)

```bash
# インストール
pnpm add -D @biomejs/biome

# 初期化
pnpm biome init
```

**biome.json**:

```json
{
  "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "style": {
        "useConst": "error",
        "noVar": "error"
      }
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  }
}
```

## Pre-commitフック設定

### Husky + lint-staged

```bash
# インストール
pnpm add -D husky lint-staged

# Husky初期化
pnpm exec husky init

# pre-commitフック作成
echo "pnpm lint-staged" > .husky/pre-commit
```

**package.json**:

```json
{
  "lint-staged": {
    "*.{ts,tsx}": ["eslint --fix", "prettier --write"],
    "*.{json,md}": ["prettier --write"]
  }
}
```

### Biome版

```json
{
  "lint-staged": {
    "*.{ts,tsx,js,jsx,json}": ["biome check --write"]
  }
}
```

## CI/CD統合

### GitHub Actions

```yaml
name: Code Quality

on:
  pull_request:
    branches: [main]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
          cache: "pnpm"

      - run: pnpm install

      # ESLint + Prettier
      - name: Lint
        run: pnpm eslint . --max-warnings 0
      - name: Check Format
        run: pnpm prettier --check .

      # または Biome
      - name: Biome Check
        run: pnpm biome ci .
```

## トラブルシューティング

### 問題 1: ESLintとPrettierの競合

**症状**: フォーマット後にESLintエラーが発生

**原因**: PrettierとESLintのルールが競合

**解決策**:

```bash
# eslint-config-prettierを最後に適用
# eslint.config.js で prettier を配列の最後に追加
```

### 問題 2: pre-commitが遅い

**症状**: コミット時に数十秒待つ

**原因**: 全ファイルをチェックしている

**解決策**:

```json
{
  "lint-staged": {
    "*.ts": ["eslint --fix --cache", "prettier --write"]
  }
}
```

`--cache`オプションで差分のみチェック

### 問題 3: VS Codeで自動フォーマットが効かない

**症状**: 保存時にフォーマットされない

**解決策** (.vscode/settings.json):

```json
{
  "editor.formatOnSave": true,
  "editor.defaultFormatter": "esbenp.prettier-vscode",
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  }
}
```

## ベストプラクティス

### すべきこと

1. **段階的に厳格化**: 最初は警告、安定したらエラーに
2. **キャッシュ活用**: `eslint --cache`でパフォーマンス改善
3. **エディタ統合**: 保存時自動フォーマットを設定
4. **CI必須化**: PRマージ前のリントチェック必須

### 避けるべきこと

1. **過度なカスタマイズ**: 標準ルールセットを尊重
2. **ルールの無効化乱用**: `eslint-disable`は最小限に
3. **フォーマット議論**: Prettierのオピニオンを受け入れる

## チェックリスト

### 初期設定時

- [ ] リンター/フォーマッターをインストール
- [ ] 設定ファイルを作成
- [ ] package.jsonにスクリプト追加
- [ ] エディタ設定を追加(.vscode/settings.json)
- [ ] .gitignoreにキャッシュファイル追加

### pre-commit設定時

- [ ] husky + lint-stagedをインストール
- [ ] pre-commitフックを作成
- [ ] lint-staged設定を追加
- [ ] 全員がフックを有効化(postinstall)

### CI/CD設定時

- [ ] ワークフローファイルを作成
- [ ] キャッシュを設定(node_modules、ESLintキャッシュ)
- [ ] 失敗時のPRブロックを設定
- [ ] エラーレポートのフォーマット調整

## 関連スキル

- **.claude/skills/code-style-guides/SKILL.md** (`.claude/skills/code-style-guides/SKILL.md`): コードスタイルガイドライン
- **.claude/skills/clean-code-practices/SKILL.md** (`.claude/skills/clean-code-practices/SKILL.md`): クリーンコード原則

## 参考文献

- **ESLint**: https://eslint.org/docs/latest/
- **Prettier**: https://prettier.io/docs/en/
- **Biome**: https://biomejs.dev/
- **Husky**: https://typicode.github.io/husky/
- **lint-staged**: https://github.com/lint-staged/lint-staged