Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

clean-code

規律ある命名・小さな関数・適切なエラー処理を通じて、読みやすく保守しやすいコードを記述するスキルです。「コードレビュー」「命名規則」「関数が長すぎる」「コードの臭い」「可読性」「ボーイスカウトルール」「単一責任」「ユニットテストの品質」といったキーワードが出たとき、またはPRの可読性レビュー・複雑な関数のリファクタリング・コメントスタイルの議論・エラー処理パターンの改善時にも活用できます。SRP・コメントの規律・フォーマット・ユニットテストをカバーし、リファクタリング手法はrefactoring-patterns、アーキテクチャはclean-architectureを参照してください。

description の原文を見る

Write readable, maintainable code through disciplined naming, small functions, and clean error handling. Use when the user mentions "code review", "naming conventions", "function too long", "code smells", "readable code", "boy scout rule", "single responsibility", or "unit test quality". Also trigger when reviewing pull requests for readability, refactoring messy functions, debating comment styles, or improving error handling patterns. Covers SRP, comment discipline, formatting, and unit testing. For refactoring techniques, see refactoring-patterns. For architecture, see clean-architecture.

SKILL.md 本文

クリーンコード フレームワーク

意図を伝え、予期しない挙動を最小化し、変更を歓迎するコードを書くための規律ある手法です。新しいコードを書く際、プルリクエストをレビューする際、レガシーシステムをリファクタリングする際、またはコード品質の改善についてアドバイスする際に、これらの原則を適用します。

コアの原則

コードは書かれるよりもはるかに頻繁に読まれます。読み手のために最適化してください。 命名の選択肢、関数の境界、フォーマット上の決定は、すべて明確さを加えるか、コストを加えるかのいずれかです。コード読取に費やされる時間と、コード作成に費やされる時間の比率は 10:1 をはるかに上回っています。コードを読みやすくすることは、書きやすく、デバッグしやすく、拡張しやすくします。

基礎: クリーンコードは機械的にルールに従うことではなく、職人としての仕事を大事にすることです。クリーンなコードベースは、よく書かれた散文のように読めます。名前は意図を明かし、関数は1ステップずつストーリーを語り、暗い隅に潜んでいる予期しない挙動はありません。ボーイスカウト・ルールが当てはまります。常にコードを見つけた時より良い状態で残してください。

スコアリング

目標: 10/10。 コードをレビューまたは書く際に、以下の原則への準拠に基づいて 0-10 で評価します。10/10 はすべてのガイドラインに完全に適合していることを意味します。低いスコアは対処すべきギャップを示します。常に現在のスコアと 10/10 に達するために必要な具体的な改善点を示してください。

  • 9-10: 名前が意図を明かし、関数は小さく焦点が当てられ、エラーハンドリングは一貫し、テストはクリーンで包括的です。
  • 7-8: ほぼクリーンですが、若干の命名の曖昧性または数個の長い関数があります。テストは存在しますが、エッジケースに欠ける可能性があります。
  • 5-6: 混合品質 -- 良いパターンと不明確な名前、重複したロジック、または一貫しないエラーハンドリングが混在しています。
  • 3-4: 著しい可読性の問題 -- 複数のことを行う長い関数、誤解を招く名前、不十分または欠落したテスト。
  • 1-2: コードは機能しますが、ほぼ読み取り不可能です -- マジックナンバー、謎めいた略語、構造なし、テストなし。

クリーンコード フレームワーク

明確に通信し、変更に適応するコードを書くための6つの規則:

1. 意味のある名前

コアコンセプト: 名前は意図を明かし、誤った情報を避け、コードが散文のように読めるべきです。名前を説明するためにコメントが必要な場合、その名前は間違っています。

なぜ機能するのか: 名前はドキュメンテーションの最も広範な形式です。よく選ばれた名前は、実装を読む必要をなくします。不十分に選ばれた名前は、すべての読み手に著者の意図をリバースエンジニアリングするよう強います。

主要な洞察:

  • 名前は、それが存在する理由、何をするのか、どのように使用されるのかに答えるべきです
  • 小さなスコープ内のループカウンター以外の単一文字の変数を避けます
  • エンコーディング、プレフィックス、名前内の型情報を避けます(ハンガリアン記法は不要)
  • クラス名は名詞または名詞句であるべき。メソッド名は動詞または動詞句であるべき
  • 1つの概念で1つの単語を一貫して使用: fetchretrieveget を混在させない
  • より長いスコープはより長く、より説明的な名前を要求します
  • 名前変更を恐れないでください -- IDE は簡単にしてくれます

コード適用:

コンテキストパターン
変数意図を明かす名前elapsedTimeInDays ではなく delapsed
ブール値述語フレーズisActivehasPermissioncanEdit
関数アクションを説明する動詞 + 名詞calculateMonthlyRevenue() ではなく calc()
クラス責任を説明する名詞InvoiceGenerator ではなく InvoiceManager
定数検索可能な全大文字とコンテキストMAX_RETRY_ATTEMPTS = 3 ではなくインライン 3
コレクション複数形の名詞または説明的なフレーズactiveUsers ではなく listdata

参照: references/naming-conventions.md

2. 関数

コアコンセプト: 関数は小さく、1つのことをし、それをよく行うべきです。理想的な関数は 4-6 行の長さで、0 から 2 個の引数を取り、抽象化の単一レベルで動作します。

なぜ機能するのか: 小さな関数は、名前を付けやすく、理解しやすく、テストしやすく、再利用しやすいです。関数が 1つのことを行う場合、その名前はそれが行うことを正確に説明でき、本体を読む必要をなくします。長い関数はバグを隠し、テストに抵抗し、時間とともに責任を蓄積します。

主要な洞察:

  • 関数は 1つのことをし、それをよくし、それだけをすべき
  • ステップダウンルール: コードは上から下へのストーリーのように読み、各関数が抽象化の次のレベルを呼び出すべき
  • 理想的な引数の数は 0 (無参数)、次に 1 (単項)、次に 2 (二項)。3 個以上 (多項) は正当な理由が必要
  • フラグ引数(ブール値)はコード臭 -- 関数が2つのことをすることを意味します
  • コマンド・クエリ分離: 関数は状態を変更するか値を返すか、決して両方を行うべきではありません
  • 抽出を続ける: ブロックから名前の付いた関数を抽出できる場合、そうしてください
  • 関数は副作用を持つべきではありません -- 隠れた状態の変更はありません

コード適用:

コンテキストパターン
長い関数名前の付いたステップに抽出validateInput(); transformData(); saveRecord();
フラグ引数2つの関数に分割renderForPrint()renderForScreen() ではなく render(isPrint)
深いネスト内側のブロックを抽出ネストされた if/for の本体を名前の付いた関数に移動
複数のリターンガード句を上部にエラーケースの早期リターン、単一の成功パス
多くの引数パラメータオブジェクトを導入new DateRange(start, end) ではなく report(start, end, format, locale)
副作用効果を明示的にするcheckPassword()checkPasswordAndInitSession() に名前変更するか分離

参照: references/functions-and-methods.md

3. コメントとフォーマット

コアコンセプト: コメントは、コード内で自分を表現できないことの失敗です。良いコードは自己説明的です。コメントが必要な場合、それは ではなく なぜ を説明すべきです。フォーマットは、コードをスキャン可能にする視覚的構造を作成します。

なぜ機能するのか: コメントは腐ります。コードは変わりますが、コメントはしばしば変わらず、誤解を招くドキュメンテーションを作成します。それはドキュメンテーションがないよりも悪いです。クリーンなフォーマット -- 一貫したインデント、概念間の垂直スペース、論理的な順序 -- は、開発者がコードをスキャンする方法を可能にします。読者が新聞をスキャンする方法と同じです: 最初に見出し、要求に応じて詳細。

主要な洞察:

  • 最良のコメントはコード自体です -- コメントを書く代わりに、よく命名された関数を抽出します
  • 法的コメント(著作権ヘッダー)と TODO コメントは受け入れられます
  • パブリック API の Javadoc は価値があります; 内部コードの Javadoc はノイズです
  • コメントアウトされたコードは削除すべき -- バージョン管理がそれを記憶しています
  • ジャーナルコメント(ファイル内の変更ログ)は時代遅れです -- git log を使用します
  • 垂直スペース: 空白行で概念を分離
  • 垂直密度: 関連するコードは接近して表示されるべき
  • 変数は使用場所の近くで宣言されるべき
  • インスタンス変数はクラスの上部で宣言されるべき

コード適用:

コンテキストパターン
「何」の説明より良い名前に置き換える// check if eligibleisEligible() に名前変更
「なぜ」の説明コメントとして保持// RFC 7231 requires this header for proxies
コメントアウトされたコード削除するバージョン管理に記憶させてください
ファイル組織新聞の比喩高レベル関数を上部、詳細を下部に
関連するコード垂直にグループ化呼び出し元を呼び出し先の同じファイル内に保持
チームフォーマットルールに一度同意する自動フォーマッター(Prettier、Black、gofmt) を使用

参照: references/comments-formatting.md

4. エラーハンドリング

コアコンセプト: エラーハンドリングはビジネスロジックから分離された関心事です。リターンコードではなく例外を使用し、すべての例外にコンテキストを提供し、決して null を返したり渡したりしません。

なぜ機能するのか: リターンコードは呼び出し元にすぐにチェックを強制し、成功パスをエラーチェックロジックで汚します。例外を使用すると、成功パスをエラーハンドリングから分離でき、両方が読みやすくなります。null を返すと、すべての呼び出し元に null チェックを追加するよう強制し、単一の欠けたチェックはソースから遠く離れた NullPointerException を生成します。

主要な洞察:

  • try-catch ブロックを最初に書く -- トランザクション境界を定義します
  • チェック例外ではなく、チェックなし例外を使用する -- チェック例外は開放・閉鎖の原則に違反します
  • 情報的な例外メッセージを作成: 失敗した操作とコンテキストを含める
  • 失敗の型ではなく、呼び出し元のニーズに関連して例外クラスを定義
  • スペシャルケース パターン: null の代わりにスペシャルケース オブジェクトを返す(例: 空リスト、ゲストユーザー)
  • null を返さない -- 空のコレクション、Optional、または throw を返す
  • null を渡さない -- null 引数の合理的な動作は存在しません
  • サードパーティ API をラップして、それらの例外をドメインに変換します

コード適用:

コンテキストパターン
Null 戻り空のコレクションまたは Optional を返すreturn Collections.emptyList() ではなく return null
エラーコード例外に置き換えるthrow new InsufficientFundsException(balance, amount)
サードパーティ APIアダプタでラップPortfolioService はベンダー API をラップし、例外を変換
Null 引数アサーションで高速に失敗Objects.requireNonNull(user, "user must not be null")
スペシャルケースNull Object パターンnull チェックではなく、デフォルト動作を持つ GuestUser
エラー内のコンテキスト操作 + 状態を含める"Failed to save invoice #1234 for customer 'Acme'"

参照: references/error-handling.md

5. ユニットテスト

コアコンセプト: テストはファーストクラスのコードです。本番コードと同じ規律で、クリーン、読み取り可能、維持される必要があります。汚いテストはテストがないことより悪い -- それは、すべての変更を遅くする負債になります。

なぜ機能するのか: クリーンなテストは実行可能なドキュメンテーションとして機能し、システムが意図する動作を正確に示します。それはリファクタリングの安全網と、すべての変更の回帰チェックを提供します。テストがなければ、すべての変更は潜在的なバグです。汚いテストがあれば、すべての変更は読み取り不可能なテストコードとの戦闘を必要とします。

主要な洞察:

  • TDD の3つの法則: (1) 最初に失敗するテストを書く、(2) 失敗するのに必要な分だけテストを書く、(3) 合格するのに必要な分だけコードを書く
  • テストあたり 1 つの概念 -- 必ずしも 1 つのアサートではなく、1 つの論理的なアサーション
  • テストは読み取り可能であるべき: ビルド・操作・チェック パターン(Arrange-Act-Assert) を使用
  • F.I.R.S.T. 原則: Fast(速い)、Independent(独立した)、Repeatable(繰り返し可能)、Self-validating(自己検証)、Timely(タイムリー)
  • テスト名はシナリオと期待される動作を説明すべき
  • テストコードは本番コードと同じリファクタリング注意に値する
  • ドメイン固有テスト言語: DSL のように読めるヘルパー関数を作成

コード適用:

コンテキストパターン
テスト構造Arrange-Act-Assertセットアップ、実行、検証 -- 明確に分離
テスト命名シナリオ + 期待される動作shouldRejectExpiredToken ではなく test1
共有セットアップビルダー/ファクトリを抽出aUser().withRole(ADMIN).build()
複数のシナリオパラメータ化されたテスト1つのテスト メソッド、複数の入出力ペア
不安定なテスト外部依存を削除時間、ネットワーク、ファイルシステムをモック
テスト可読性ドメイン固有ヘルパーassertThatInvoice(inv).isPaidInFull()

参照: references/testing-principles.md

6. コード臭とヒューリスティック

コアコンセプト: コード臭は、より深い設計問題の表面的な指標です。それらをすばやく認識し、的を絞ったリファクタリングを適用することを学びます。すべての臭いが即座のアクションを必要とするわけではありませんが、それらを無視すると技術的負債が蓄積します。

なぜ機能するのか: 臭いはヒューリスティック -- 深い分析を必要とすることなく、可能性のある問題を指します。「この関数の引数が多すぎる」または「このクラスは機能の羨望を持っている」をすばやく特定できる開発者は、漠然とした「クリーンアップ」の取り組みではなく、的を絞った改善を行うことができます。

主要な洞察:

  • コメント: 不適切な情報、時代遅れのコメント、コードを繰り返す冗長なコメント
  • 関数: 引数が多すぎる、出力引数、フラグ引数、呼び出されることのない死んだ関数
  • 一般的な: 明らかな重複、間違った抽象化レベルのコード、機能の羨望(メソッドが自身より別のクラスをより多く使用)、マジックナンバー
  • 名前: 間違った抽象化レベルの名前、副作用を説明しない名前、曖昧な短い名前
  • テスト: 不十分なテスト、スキップされたテスト、テストされていない境界条件、失敗パス テストなし
  • ボーイスカウト・ルールを適用: 見つけた時より、コードをクリーンに残す
  • 小さく、テストされたステップでリファクタリング -- 決してリファクタリングと機能追加を同時に行わない

コード適用:

コンテキストパターン
重複共有ロジックを抽出一般的な検証 → validateEmail() ヘルパー
長いパラメータリストパラメータオブジェクトを導入SearchCriteria は関連するパラムをグループ化
機能の羨望メソッドをデータのクラスに移動order.calculateTotal() ではなく calculator.total(order)
死んだコード削除する未使用の関数、到達不可能なブランチを削除
マジックナンバー名前の付いた定数MAX_LOGIN_ATTEMPTS = 5 ではなく裸の 5
散弾銃手術関連する変更を統合分散されたロジックを単一モジュールにグループ化

参照: references/code-smells.md

一般的な間違い

間違いなぜ失敗するのか修正
名前を縮約する書くのに数秒を節約し、読むのに数時間を費やすIDE オートコンプリート; 完全で説明的な名前を使用
「賢い」ワンライナー書くのは素晴らしい、デバッグは不可能明確な名前を持つ読み取り可能なステップに展開
コメントの代わりにリファクタリングコメントは腐る; コードが真実コメントの代わりに、よく命名された関数を抽出
一般的な例外をキャッチ予期されたエラーと共にバグを飲み込む具体的な例外をキャッチ、予期しない例外を伝播させる
エラーパス用テストなし成功パスは機能し、エッジケースがクラッシュすべてのブランチ、境界、失敗モードをテスト
過度な最適化わずかなパフォーマンスのために意図を曖昧にする最初にクリーンコードを書く、測定されたボトルネックを最適化
神クラス1 つのクラス、2000 行、すべてを行うSRP を適用 -- 責任で分割
テストなしでリファクタリング回帰をキャッチするための安全網がないリファクタリング前に特性評価テストを書く
一貫しない規則すべてのファイルが異なるコードベースのように感じるスタイルに同意し、リンター とフォーマッターで強制
null をどこにでも返すNull チェックがウイルスのように広がるOptional、空のコレクション、または Null Object パターンを使用

クイック診断

すべてのコードベースを監査:

質問いいえの場合アクション
本体を読まずに、それぞれの関数を理解できますか?名前が意図を明かしていない関数をそれが行うことを説明するように名前変更
すべての関数は 20 行未満ですか?関数が複数のことをする副操作を名前の付いたヘルパーに抽出
コメントアウトされたコード ブロックはありませんか?混乱を作成する死んだコードそれらを削除 -- バージョン管理は履歴を持っています
エラーハンドリングはビジネスロジックから分離されていますか?Try-catch ブロックが主な流れを汚すエラーハンドリングを抽出; 例外を返すコードではなく使用
すべてのクラスは単一の責任を持っていますか?クラスが無関係な責任を蓄積明確な名前を持つ焦点を当てたクラスに分割
すべてのパブリックメソッドのテストはありますか?変更の安全網がないさらなる変更前にテストを追加
テスト名は動作を説明していますか?テストが失敗すると理解しにくいshouldDoXWhenY パターンに名前変更
重複は 3 回の発生以下ですか?コピー ペーストがバグを広げている共有関数またはモジュールに抽出
マジックナンバーは名前の付いた定数に置き換えられていますか?意図が生の値の後ろに隠れている説明的な名前で定数を抽出
すべてのテストを 10 秒以下で実行できますか?遅いテストはそれらを実行することをためらわせる外部の deps をモック、統合テストを分割

リファレンスファイル

  • naming-conventions.md: 意図を明かす名前、誤った情報を避ける、クラス対メソッド命名、前後の例
  • functions-and-methods.md: 小さな関数、引数の数、コマンド・クエリ分離、ステップダウン・ルール、副作用
  • comments-formatting.md: 良い対悪いコメント、新聞の比喩、垂直フォーマット、チームルール
  • error-handling.md: リターンコード上の例外、null ハンドリング、スペシャルケース パターン、サードパーティ API のラッピング
  • testing-principles.md: TDD 法則、F.I.R.S.T. 原則、クリーンテスト パターン、テスト可読性
  • code-smells.md: カテゴリ別に整理された包括的な臭いカタログ、的を絞ったリファクタリング付き

さらに学ぶ

このスキルは、Robert C. Martin のソフトウェア職人技についての著作に基づいています:

著者について

Robert C. Martin("Uncle Bob") は、1970 年からプログラミングを行っているソフトウェア エンジニア、インストラクター、著者です。彼はアジャイル宣言の共著者であり、Uncle Bob Consulting LLC および Clean Coders の創設者です。彼の本 -- Clean Code (2008)、The Clean Coder (2011)、Clean Architecture (2017)、Clean Agile (2019) -- はコード品質、職業的責任、ソフトウェア設計についての思考方法を、開発者の世代全体に形作りました。Martin は、開発者は自身の仕事の品質に責任を持つ必要がある専門家であり、高速に行く唯一の方法は良く行うことであるという妥協しない立場で知られています。

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
wondelai
リポジトリ
wondelai/skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/wondelai/skills / ライセンス: MIT

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: wondelai · wondelai/skills · ライセンス: MIT