メインコンテンツへスキップ
ルールは、Droidが毎回従う成文化された標準です。(決定と文脈を捉える)メモリーとは異なり、ルールはコードがどのように書かれるべきかを定義します。このガイドでは、個人やチームにおいて効果的にルールを整理する方法を説明します。
Factory Appでも利用可能: これらの規約はDroid CLIとFactory Appの両方で同じように機能します。インターフェースに関係なく、Droidは同じ.factory/rules/ファイルを読み込みます。

ルールと他の設定の比較

ルールは規範的です—Droidにすべきことを指示します。一貫して適用されるべき標準に使用してください。

ルールディレクトリの設定

基本構造

プロジェクトに .factory/rules/ ディレクトリを作成します:
すべてのプロジェクトに適用される個人ルールの場合:

AGENTS.mdでルールを参照する

AGENTS.md にセクションを追加します:

効果的なルールの記述

ルール構造

各ルールは以下であるべきです:
  • 具体的: 解釈の余地なく従えるほど明確
  • 実行可能: 避けるべきことではなく、すべきことを指示
  • スコープ化: いつ適用されるかを明記
  • 正当化 (任意): 複雑なルールに対する理由の説明

テンプレート


ルールファイルの例

TypeScriptルール

.factory/rules/typescript.md を作成します:

anyを避ける

適用対象: すべてのTypeScriptファイル ルール: anyは使用しません。型ガード付きのunknownを使うか、適切な型を定義します。

Function Patterns

Use early returns

Applies to: All functions with conditionals Rule: Return early for edge cases instead of nesting.

Named exports over default

Applies to: All module exports Rule: Use named exports for better refactoring and import clarity.

Component file structure

Applies to: All component files Rule: Order sections as: imports, types, component, exports.

State Management

Zustand for client state

Applies to: Client-side state that isn’t server data Rule: Use Zustand stores in src/stores/. One store per domain.

React Query for server state

Applies to: All data fetched from APIs Rule: Use React Query. Queries go in src/queries/.
src/ └── components/ └── UserCard/ ├── UserCard.tsx ├── UserCard.test.tsx # ✅ Colocated └── index.ts

One assertion per test

Applies to: Unit tests Rule: Test one behavior per test case. Multiple assertions OK if testing same behavior.

Mocking

Mock at boundaries

Applies to: All mocked dependencies Rule: Mock external APIs and services, not internal functions.

Use MSW for API mocking in integration tests

Applies to: Integration tests that need API responses Rule: Use Mock Service Worker instead of mocking fetch directly.

Validate environment variables

Applies to: Application startup Rule: Validate required env vars exist at startup.

Input Validation

Validate all external input

Applies to: API routes, form handlers Rule: Use Zod to validate all input from users or external sources.

Error Handling

Never expose internal errors

Applies to: API error responses Rule: Log detailed errors server-side; return generic messages to clients.

Authentication

Check authentication on every protected route

Applies to: All API routes requiring auth Rule: Use middleware or guards. Never assume auth from client.
.factory/rules/ ├── _base/ # Foundation rules (everyone follows) │ ├── typescript.md │ └── security.md ├── frontend/ # Frontend-specific │ ├── react.md │ └── styling.md ├── backend/ # Backend-specific │ ├── api.md │ └── database.md └── testing/ # テスト標準 ├── unit.md └── integration.md

ルールの所有者

各ルールセットの管理者を追跡するため、オーナー情報を追加します:

Current Limitation: No Glob Pattern Support

現在、Droidはファイルパターンに基づく条件付きルール適用(例: 「これらのルールを*.tsxファイルにのみ適用」)をサポートしていません。これはロードマップ上にあります。
回避策:
  1. ファイルタイプごとに整理: 別々のルールファイルを作成し、コンテキストに応じて参照する
  1. ルールで明確なスコープを使用: 適用可能性を明確に述べる
  1. 複雑なワークフローにはスキルを使用: スキルはファイルタイプ固有の指示をエンコードできる

ルールの保守

新しいルールの追加

Droidを繰り返し修正している場合:
  1. パターンを特定する
  2. 例を含む明確なルールを記述する
  3. 適切なルールファイルに追加する
  4. 必要に応じてAGENTS.mdを更新する
  5. 類似の作業をDroidに依頼してテストする

ルールのレビュー

四半期レビューチェックリスト:
  • リンティングで強制されるようになったルールを削除
  • 変更されたルールを更新
  • 新しいパターンのルールを追加
  • 例がまだ正確かチェック
  • AGENTS.mdの参照が最新かを確認

ルールの廃止

ルールが時代遅れになった場合:

ルールの自動実行

Droidは .factory/rules/ ファイルのルールに従いますが、フック で自動実行を追加できます。

編集後にリンターを実行

ファイル編集後にリンターを自動実行するPostToolUseフックを追加します:

コードスタイルの検証

Prettierやフォーマッターを自動実行します:
その他の例は自動整形フックコード検証フックを参照してください。

クイックリファレンス

ファイルの場所

ルール形式

良いルールの条件

  • ✅ 具体的で曖昧さがない
  • ✅ コード例を含む
  • ✅ いつ適用されるかを明記
  • ✅ 実行可能(「Xを検討する」ではなく「Xを行う」)
  • ❌ 曖昧ではない(「クリーンなコードを書く」)
  • ❌ リンタールールと重複していない
  • ❌ 他のルールと矛盾していない

次のステップ

セットアップチェックリスト

パワーユーザー設定を完了する

メモリ管理

意思決定とコンテキストを記録する