Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    kis9a

    refactor

    kis9a/refactor
    Coding

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    ユーザーが「リファクタリング」「コードを整理」「可読性を上げて」「きれいにして」「保守性を改善」等と要求した時に発動。 機能を変更せずに、コードの保守性・可読性・パフォーマンスを向上させる。 テストが存在する場合は必ずテストをパスすることを確認し、機能不変を保証する。

    SKILL.md

    手順

    1. 対象の特定: リファクタリング対象のファイル/関数を特定
    2. 既存テストの確認:
      • 対応する *_test.go を確認
      • go test ./... を実行してベースライン確立(全テストがパスすることを確認)
    3. リファクタリング計画: 以下の観点で改善機会を特定
      • 命名改善(変数名、関数名の明確化)
      • 関数分割(長すぎる関数、複数の責任を持つ関数)
      • 重複コード削除(DRY原則)
      • 複雑な条件式の簡素化
      • マジックナンバーの定数化
      • エラーハンドリングの改善
    4. リファクタリング実施: 小さなステップで段階的に変更
    5. テスト実行: 各ステップ後に go test ./... で機能不変を確認
    6. コード品質確認:
      • go fmt ./... でフォーマット
      • go vet ./... で静的解析
    7. コミット: 変更が成功したら、適切なメッセージでコミット(refactor: ...形式)

    リファクタリングパターン

    1. 命名改善

    // Before
    func f(n []int) int { ... }
    
    // After
    func Sum(numbers []int) int { ... }
    

    2. 関数分割

    // Before: 1つの関数が複数の責任
    func ProcessData(data []byte) error {
        // バリデーション
        // パース
        // 変換
        // 保存
    }
    
    // After: 単一責任に分割
    func ValidateData(data []byte) error { ... }
    func ParseData(data []byte) (*Data, error) { ... }
    func TransformData(data *Data) *Result { ... }
    func SaveResult(result *Result) error { ... }
    

    3. 重複削除

    // Before: 重複コード
    func AddUser(u User) { db.Insert("users", u) }
    func AddPost(p Post) { db.Insert("posts", p) }
    
    // After: 汎用化
    func Add[T any](table string, entity T) { db.Insert(table, entity) }
    

    4. マジックナンバーの定数化

    // Before
    if len(items) > 100 { ... }
    
    // After
    const MaxItems = 100
    if len(items) > MaxItems { ... }
    

    重要な原則

    • ✅ 機能不変: 外部から見た動作は一切変更しない
    • ✅ テストファースト: リファクタ前に必ずテストを実行
    • ✅ 小さなステップ: 一度に多くを変更しない
    • ✅ 継続的な検証: 各ステップ後にテスト実行
    • ❌ 新機能追加: リファクタリングと機能追加は分離

    リファクタリング対象の優先順位

    1. High: 複雑度が高く、バグを生みやすい箇所
    2. Medium: 頻繁に変更される箇所
    3. Low: 安定していて変更頻度が低い箇所

    出力例

    # Refactoring Report
    
    ## Target
    - File: `pkg/calc/sum.go`
    
    ## Changes Applied
    1. ✅ Improved function naming clarity
    2. ✅ Added nil check for defensive programming
    3. ✅ Simplified loop condition
    
    ## Test Results
    ✅ All tests pass (before and after)
    - Tests run: 5
    - Coverage: 85% (unchanged)
    
    ## Performance Impact
    No performance regression detected
    

    ベストプラクティス

    • リファクタリング前後でベンチマークを取る(パフォーマンス改善の場合)
    • コミットメッセージに「何を」「なぜ」を明記
    • レビューしやすいように、変更を論理的に分割
    Repository
    kis9a/claude-skills-demo
    Files