AgentSkillsCN

ensure-quality

实现代码质量的自动化提升(相当于 make check-all)。分两阶段执行:先进行质量修正,再优化代码结构。

SKILL.md
--- frontmatter
name: ensure-quality
description: コード品質の自動改善(make check-all相当)。品質修正→コード整理の2フェーズで実行。
allowed-tools: Read, Bash, Task

コード品質の自動改善

役割の明確化: このスキルは make check-all 相当の自動修正コード整理を実行します。

  • 検証・スコアリングのみ行いたい場合 → /scan --validate
  • 分析レポートが欲しい場合 → /analyze
  • エビデンスベースの改善実装 → /improve

目的

このスキルは以下を提供します:

  • 品質修正: make check-all が成功するまで自動的にコードを修正
  • コード整理: git diff で変更されたファイルを対象に、コードの整理とリファクタリングを実行
  • 段階的な修正: 2つのフェーズで安全にコード品質を向上

いつ使用するか

プロアクティブ使用(自動で使用を検討)

以下の状況では、ユーザーが明示的に要求しなくても使用を検討してください:

  1. コード品質の問題

    • make check-all が失敗している
    • リント・型チェック・テストのエラーが複数ある
    • コードレビューで品質指摘がある
  2. リファクタリング後

    • 大規模なリファクタリング後の品質チェック
    • コーディング規約への準拠確認
  3. PR作成前

    • PR作成前の品質確保
    • 自動修正可能な問題の解消

明示的な使用(ユーザー要求)

  • /ensure-quality コマンド
  • 「コード品質を改善して」「make check-all を通して」などの直接的な要求

実行内容

このスキルは2つのフェーズで品質を向上させます:

フェーズ1: 品質修正(quality-checker)

make check-allが成功するまで、自動的にコードを修正してコード品質を保証します。

フェーズ2: コード整理(code-simplifier)

git diffで変更されたファイルを対象に、コードの整理とリファクタリングを実行します。

プロセス

フェーズ1: 品質修正(quality-checker)

yaml
subagent_type: "quality-checker"
description: "Auto-fix code quality issues"
prompt: |
  コード品質の自動修正を実行してください。

  ## モード
  --auto-fix

  ## 対象
  [指定されたパス、またはプロジェクト全体]

  ## 目標
  make check-all が成功するまで以下を繰り返し修正:
  1. make format - コードフォーマット
  2. make lint - リントチェック
  3. make typecheck - 型チェック
  4. make test - テスト実行

  ## 参照
  - CLAUDE.md のコーディング規約
  - template/ ディレクトリの実装例

修正の順序:

  1. コードフォーマット (make format) - Ruff による自動フォーマット
  2. リントチェック (make lint) - Ruff によるリントチェックと自動修正
  3. 型チェック (make typecheck) - pyright による厳格な型チェック
  4. テスト実行 (make test) - 全テストの実行

フェーズ2: コード整理(code-simplifier)

※品質修正(quality-checker)が成功した後に実行

yaml
subagent_type: "code-simplifier"
description: "Simplify and refactor code"
prompt: |
  git diffで変更されたファイルのコード整理を実行してください。

  ## 対象
  git diff --name-only --diff-filter=ACMR '*.py' で検出されたPythonファイル

  ## 整理項目(優先度順)
  1. 型ヒント完全化(90%カバレッジ目標)
  2. ロギング実装(全関数に必須)
  3. エラーメッセージの具体性
  4. 命名統一(snake_case/PascalCase/UPPER_SNAKE_CASE)
  5. 関数分割(100行超過コードの分割)
  6. Docstring追加(NumPy形式)
  7. 重複削除(DRY原則)
  8. 複雑度低減(サイクロマティック複雑度21以上をリファクタ)

  ## 安全性
  - 1ファイルずつ段階的に修正
  - 各修正後に make test 実行
  - テスト失敗時は即座にロールバック
  - 動作を変える変更は一切行わない(リファクタリングのみ)

  ## 参照
  - CLAUDE.md のコーディング規約
  - docs/coding-standards.md の詳細規約
  - template/ ディレクトリの実装例
  - improvement-implementer の改善パターン

整理の順序:

  1. 変更ファイル特定 - git diff で変更されたPythonファイルを検出
  2. 分析とスコアリング - 型ヒント、ロギング、関数長、複雑度、命名、Docstring、重複を評価
  3. 優先度順に修正 - 高優先度(型ヒント、ロギング、関数分割)から順次実行
  4. テスト確認 - 各修正後に make test 実行、失敗したらロールバック

使用例

例1: プロジェクト全体の品質修正

状況: make check-all が失敗している

実行:

code
このスキルを使用し、プロジェクト全体の品質修正を実行

期待される結果:

  • フェーズ1で make check-all が成功
  • フェーズ2で変更されたファイルのコード整理が完了

例2: 特定ディレクトリの品質修正

状況: 特定のディレクトリのみ修正したい

実行:

code
このスキルを使用し、src/mylib/core/ の品質修正を実行

期待される結果:

  • 指定ディレクトリのみが対象
  • 段階的な修正とテスト確認

例3: PR作成前の品質確保

状況: PR作成前に自動修正可能な問題を解消

実行:

code
このスキルを使用し、PR作成前の品質チェックを実行

期待される結果:

  • すべての品質チェックがパス
  • コード整理も完了

例4: リファクタリング後の品質チェック

状況: 大規模なリファクタリング後の品質確認

実行:

code
このスキルを使用し、リファクタリング後の品質チェックを実行

期待される結果:

  • 型ヒント、ロギング、Docstring が適切に追加
  • テストがすべてパス

実行フロー図

code
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  フェーズ1: 品質修正(quality-checker)                       │
│                                                             │
│  make check-all 実行                                        │
│       │                                                     │
│       ├─→ 成功 → フェーズ2へ                                │
│       │                                                     │
│       └─→ 失敗 → エラー種別を判定                           │
│              │                                              │
│              ├─→ フォーマット → make format → 再検証        │
│              ├─→ リント → make lint + 手動修正 → 再検証     │
│              ├─→ 型エラー → 型ヒント修正 → 再検証           │
│              └─→ テスト失敗 → 実装/テスト修正 → 再検証      │
│                                                             │
│  最大5回ループ後、未解決問題をレポート                       │
│                                                             │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  フェーズ2: コード整理(code-simplifier)                     │
│                                                             │
│  git diff で変更ファイルを特定                               │
│       │                                                     │
│       ├─→ 変更なし → スキップ                               │
│       │                                                     │
│       └─→ 変更あり → 各ファイルを分析                       │
│              │                                              │
│              ├─→ 優先度順にソート                           │
│              │                                              │
│              └─→ 1ファイルずつ修正                          │
│                    │                                        │
│                    ├─→ 修正実行                             │
│                    ├─→ make test 実行                       │
│                    │      │                                 │
│                    │      ├─→ PASS → 次へ                   │
│                    │      └─→ FAIL → ロールバック           │
│                    │                                        │
│                    └─→ 全ファイル完了                       │
│                                                             │
│  最終レポート出力                                            │
│                                                             │
└─────────────────────────────────────────────────────────────┘

品質基準

このスキルの成果物は以下の品質基準を満たす必要があります:

必須(MUST)

  • フェーズ1(品質修正)が成功し、make check-all がパス
  • フェーズ2(コード整理)で変更されたファイルが整理されている
  • 各修正後にテストを実行し、失敗時はロールバック
  • CLAUDE.md のコーディング規約に準拠
  • 最終レポートが出力されている

推奨(SHOULD)

  • 型ヒントカバレッジが90%以上
  • 全関数にロギングが実装されている
  • 関数長が100行以下
  • サイクロマティック複雑度が20以下
  • Docstringカバレッジが80%以上

禁止(NEVER)

  • テストが失敗したまま次の修正に進む
  • 動作を変える変更を行う
  • 一度にすべてのファイルを修正する
  • ロールバック機能を省略する

重要な注意事項

  • CLAUDE.md の規約に従う: 型ヒント、エラーメッセージ、コーディングスタイルは CLAUDE.md の規約に準拠
  • 既存の動作を保持: テストが失敗した場合、まず実装が仕様通りかを確認し、必要に応じてテストも修正
  • 段階的な修正: 一度にすべてを修正せず、エラーの種類ごとに段階的に対処
  • 進捗の報告: 各ステップでの修正内容と結果を明確に報告

エラー対処の具体例

型エラーの例

python
# エラー: Incompatible return value type (got "None", expected "str")
def get_name() -> str:
    return None  # 修正前

# 修正後
def get_name() -> str | None:
    return None

リントエラーの例

python
# エラー: F401 'os' imported but unused
import os  # 修正: 未使用のインポートを削除

# エラー: E501 line too long (120 > 100 characters)
# 修正: 長い行を適切に改行

出力フォーマット

yaml
品質改善レポート:
  実行時間: [秒]

フェーズ1: 品質修正(quality-checker)
  修正サイクル数: [回]
  初期状態:
    フォーマット: [PASS/FAIL]
    リント: [PASS/FAIL] ([エラー数]件)
    型チェック: [PASS/FAIL] ([エラー数]件)
    テスト: [PASS/FAIL] ([失敗数]/[総数])

  実施した修正:
    - ファイル: [パス]
      問題: [問題の説明]
      修正: [修正内容]

  最終状態:
    make check-all: PASS

フェーズ2: コード整理(code-simplifier)
  対象ファイル数: [件]

  分析結果:
    高優先度: [件]
    中優先度: [件]
    低優先度: [件]

  実施した整理:
    成功:
      - ファイル: [パス]
        整理項目: [項目]
        改善内容: [内容]
        テスト結果: PASS

    失敗:
      - ファイル: [パス]
        整理項目: [項目]
        エラー: [エラー内容]
        対応: ロールバック完了

    スキップ:
      - ファイル: [パス]
        理由: [理由]

  統計:
    型ヒントカバレッジ: [前]% → [後]%
    平均関数長: [前]行 → [後]行
    平均複雑度: [前] → [後]
    Docstringカバレッジ: [前]% → [後]%

  最終状態:
    make test: PASS

統合結果:
  品質修正: ✅ 成功
  コード整理: ✅ 成功
  全体状況: ✅ プロジェクト品質向上完了

エラーハンドリング

品質修正が5回以内に成功しない

原因:

  1. 構造的な問題(アーキテクチャレベルの問題)
  2. テストの仕様が不明確

対処法:

  • 未解決の問題をレポート
  • 手動修正が必要な箇所を明示
  • /analyze で詳細な分析を提案

テストが失敗してロールバック

原因:

  1. リファクタリングが動作を変えた
  2. テスト自体に問題がある

対処法:

  • 即座にロールバック
  • 失敗内容をレポート
  • 手動確認を促す

型チェックエラーが解消しない

原因:

  1. 型ヒントが不完全
  2. サードパーティライブラリの型定義がない

対処法:

  • 型ヒントを追加
  • # type: ignore を最小限に使用
  • 未解決の問題をレポート

完了条件

このスキルは以下の条件を満たした場合に完了とする:

  • フェーズ1(品質修正)が成功し、make check-all がパス
  • フェーズ2(コード整理)が完了(または変更ファイルがなくスキップ)
  • 最終レポートが出力されている
  • すべてのテストがパス
  • CLAUDE.md のコーディング規約に準拠

関連スキル

  • coding-standards: Python コーディング規約(型ヒント、命名規則等)
  • tdd-development: TDD 開発プロセス
  • error-handling: エラーハンドリングパターン

参考資料

  • CLAUDE.md: プロジェクト全体のガイドライン
  • docs/coding-standards.md: 詳細なコーディング規約
  • template/: 実装例
  • .claude/agents/quality-checker/: 品質修正エージェント
  • .claude/agents/code-simplifier/: コード整理エージェント