Reactのフックには「トップレベルでのみ呼び出す」「React関数コンポーネントまたはカスタムフック内でのみ呼び出す」という2つのルールがあります。rules-of-hooks ルールはこれらを検証し、条件分岐やループの中でフックを呼び出しているコードをエラーとして報告します。フックが呼ばれる順序がレンダリングごとに変わると、Reactの内部状態管理が壊れるためです。カスタムフックの命名規則は rules-of-hooks ではなく別のlintルールや慣習の問題です。依存配列の過不足は exhaustive-deps ルールの担当です。useState を複数回呼ぶのは正常な使い方で、違反にはなりません。