Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add permafrost0/02_skills_agents --skill "maintenance-quality"
Install specific skill from multi-skill repository
# Description
保守品質チェックの判断基準。maintenance-reviewerが使用する専用知識ベース。DRY・命名・複雑度・ドキュメントを対象とする。
# SKILL.md
name: maintenance-quality
description: 保守品質チェックの判断基準。maintenance-reviewerが使用する専用知識ベース。DRY・命名・複雑度・ドキュメントを対象とする。
user-invocable: false
保守品質基準 (maintenance-quality)
このドキュメントは maintenance-reviewer Agent 専用の知識ベースです。
長期的な保守性に関わる問題(DRY違反・命名・複雑度・ドキュメント不足)の検出基準を定義します。
DRY原則(重複コードの検出)
判定基準
- 同一ロジックの重複は共通関数化する
- 完全一致・ほぼ同一のコードブロックが2箇所以上 → HIGH
- 同一パターンが3箇所以上 → HIGH
検出手順
- 同一文字列パターンを Grep で検索し、ヒット数が2件以上のものを候補とする
- 同じ変数名で同じ処理をしているブロックを読んで確認する
典型パターン
| パターン | 問題 | 対策 |
|---|---|---|
| 同一クエリ文字列が複数箇所 | DB操作の重複 | ヘルパー関数に共通化 |
| 同一ハッシュ処理が複数箇所 | ロジック重複 | hash_password() 等に切り出す |
| 条件分岐の全分岐が同一処理 | 無意味な分岐 | 分岐を削除して1行にまとめる |
| DB接続パターンが全関数に散在 | 設定変更時の修正漏れリスク | 接続ヘルパーを共通化 |
深刻度
- 完全重複が2〜3箇所 → HIGH
- 無意味な分岐(両分岐が同一) → MEDIUM
- 軽微なパターン重複 → LOW
命名規則
判定基準(Python)
| 対象 | 規則 | 違反例 |
|---|---|---|
| 変数・関数 | snake_case |
userName, getUser |
| 定数 | UPPER_SNAKE_CASE |
adminPassword, secretkey |
| クラス | PascalCase |
user_manager, userManager |
| 意味の明確さ | 意図が伝わる名前 | x, tmp, data, val, result, res |
曖昧な名前の検出
以下の変数名は文脈によっては許容されるが、関数の戻り値や重要な中間変数に使われている場合は報告する:
- result, res, ret → 何のresultかを含む名前に改名
- data, info → 何のdataかを含む名前に改名
- tmp, temp → 一時変数でも意味のある名前を推奨
- x, y, i, j → ループ変数・座標以外での使用は警告
深刻度
- 命名規則違反(caseスタイル) → MEDIUM
- 曖昧な名前(意図不明) → LOW
複雑度
判定基準
| 指標 | 閾値 | 深刻度 |
|---|---|---|
1関数内の分岐数(if/elif/else/for/while/tryの合計) |
7以上 | HIGH |
| ネスト深度 | 4レベル以上 | MEDIUM |
| 関数長 | 30行超 | MEDIUM |
| 引数数 | 5個以上 | MEDIUM |
複雑度超過への対処
- Early Return パターンで深いネストを解消
- 条件ロジックをヘルパー関数に切り出す
- 引数は
dataclass/TypedDictにまとめる
ドキュメント
判定基準
def直後に"""形式の docstring が存在しない → LOW- docstring に
Args/Returns/Raisesセクションがない → LOW
推奨フォーマット(Google スタイル)
def get_user(username: str) -> Optional[tuple]:
"""ユーザー情報を取得する。
Args:
username: 検索対象のユーザー名。
Returns:
ユーザーレコードのタプル。存在しない場合は None。
Raises:
sqlite3.Error: DB接続・クエリ実行に失敗した場合。
"""
報告フォーマット
## 保守レビュー結果
### 発見事項
| 種別 | 深刻度 | 場所 | 問題 | 推奨対応 |
|---|---|---|---|---|
| DRY違反 | HIGH | search_users():62〜77行目 | role分岐の全分岐が同一処理 | 共通処理を1行に統合 |
| 複雑度超過 | HIGH | search_users():53〜96行目 | 分岐数13、閾値7超過 | ヘルパー関数に分割 |
### カウント
- CRITICAL: N件
- HIGH: N件
- MEDIUM: N件
- LOW: N件
### 総評
<保守性リスクの全体傾向と優先リファクタリング対象>
深刻度の優先順位: CRITICAL > HIGH > MEDIUM > LOW
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.