「また設定ファイルがズレてる…」
AIコーディングツールを複数使い始めたある日、こんな状況に気づきました。Claude CodeのCLAUDE.mdにはコーディング規約を細かく書いたのに、Cursorの.cursor/rules/には古いルールが残ったまま。そしてCodexに切り替えたら、どちらの設定も反映されていない。チームメンバーが「Gemini CLI使いたい」と言い出したら、また別ファイルを用意しなければならない——。
2026年現在、AIコーディングツールは7種類以上が乱立し、それぞれが独自の設定ファイル形式を持っています。この「設定ファイル疲れ」は、多くの開発者が共感する問題です。HackerNewsに投稿されたLNAIのスレッドが70ポイント・30コメントを集めたのも、この共感が背景にあります。
この記事では、その問題をシンプルに解決するOSSのCLIツール「LNAI」を、インストールから実際の設定例まで順を追って解説します。5分で試せるセットアップから始めますので、ぜひ今日から使ってみてください。
難しい概念は後にして、まず動かしてみましょう。以下の手順でLNAIが起動し、設定の同期が体感できます。
ステップ1:インストール
LNAIはnpmでグローバルインストールします。Node.js 18以上が必要です。
# グローバルインストール
npm install -g lnai
# インストール確認
lnai --version
動作環境: Node.js 18以上、npm 9以上
ステップ2:プロジェクトで初期化
既存プロジェクトのルートで以下を実行します。
cd your-project
lnai init
実行すると、以下の構造が自動生成されます。
.ai/
├── AGENTS.md ← 全ツール共通の指示書
├── config.json ← 対応ツールの選択
└── settings.json ← 権限・MCP設定(オプション)
ステップ3:共通設定を書く
生成された.ai/AGENTS.mdを開いてプロジェクトのガイドラインを記述します。
# プロジェクト概要
Next.js + TypeScriptで構築したSaaSアプリケーション。
## コーディング規約
- TypeScriptのstrictモードを使用すること
- ESM import形式を使用(require禁止)
- 関数はconstで定義(function宣言は避ける)
- コメントは日本語で記述
## テスト方針
- 新機能には必ずJestのユニットテストを追加
- テストファイルは `*.test.ts` の命名規則に従う
## 禁止事項
- `any`型の使用禁止(やむを得ない場合は`unknown`を使用)
- console.logの本番コードへの混入禁止
ステップ4:全ツールに同期
lnai sync
このコマンド1つで、設定が各ツールのネイティブフォーマットに自動変換されます。Claude CodeにはCLAUDE.mdが、Cursorには.cursor/rules/が、CodexにはAGENTS.mdが生成されます。
注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。特に既存の設定ファイルが上書きされる可能性があるため、初回実行前にバックアップを推奨します。
LNAIが解決する「設定ファイル問題」の全体像
AIコーディングツールの設定ファイルを確認しましょう。AIエージェント構築の基本を押さえた上で、ツール間の設定管理がいかに複雑かを理解しておくことが重要です。
各ツールの設定ファイル対応表
| AIコーディングツール | 設定ファイル / ディレクトリ | 形式 | 備考 |
|---|---|---|---|
| Claude Code | CLAUDE.md / .claude/ |
Markdown | プロジェクトルート・ホームディレクトリ対応 |
| Codex CLI | AGENTS.md |
Markdown | 最も汎用性の高い共通フォーマット |
| Cursor | .cursor/rules/*.mdc |
Markdown(mdc拡張) | 旧.cursorrulesから移行中 |
| Gemini CLI | GEMINI.md / .gemini/ |
Markdown | ~/.gemini/でグローバル設定も可 |
| GitHub Copilot | .github/copilot-instructions.md |
Markdown | リポジトリ共有に適したパス |
| Windsurf | .windsurf/rules/ |
Markdown | 旧.windsurfrulesから移行中 |
| OpenCode | .opencode/ |
TOML/Markdown | 新興ツール、急速に採用拡大中 |
7つのツールがそれぞれ異なるパスと形式を使っています。1つの規約変更を全ツールに反映するだけで、7ファイルを手動で更新しなければならない——これがLNAIが解決しようとしている問題です。
LNAIの設定ファイル詳細解説
ディレクトリ構造
LNAIを初期化すると、プロジェクトルートに.ai/ディレクトリが作成されます。
your-project/
├── .ai/ ← LNAIの管理ディレクトリ(Gitコミット対象)
│ ├── AGENTS.md ← 全ツール共通の指示書(メインファイル)
│ ├── config.json ← 対応ツールの選択と設定
│ └── settings.json ← 権限・MCP設定
├── .gitignore ← LNAI syncが自動追記
├── CLAUDE.md ← sync後に自動生成(Claude Code用)
├── AGENTS.md ← sync後に自動生成(Codex用)
├── GEMINI.md ← sync後に自動生成(Gemini CLI用)
└── .cursor/
└── rules/
└── project.mdc ← sync後に自動生成(Cursor用)
ポイントは.ai/だけをGitコミットすれば良いことです。生成された各ツールの設定ファイルは.gitignoreに自動追記されるため、チームメンバーはlnai syncを実行するだけでローカルに設定が展開されます。
config.json:対応ツールの選択
使用するツールを明示的に指定します。
{
"tools": [
"claude-code",
"codex",
"cursor",
"gemini-cli",
"github-copilot",
"windsurf",
"opencode"
]
}
不要なツールはリストから外すことで、そのツール用の設定ファイルは生成されません。チームでCursorしか使わないなら"cursor"だけ残せばOKです。
settings.json:権限とMCP設定
Claude Codeのパーミッション設定やMCPサーバーの設定もここで一元管理できます。
{
"permissions": {
"allow": [
"Bash(git:*)",
"Bash(npm:*)",
"Read",
"Write"
],
"ask": [
"Bash(curl:*)",
"Bash(ssh:*)"
],
"deny": [
"Bash(rm -rf:*)"
]
},
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
}
}
}
動作環境: LNAI v0.x系(2026年3月時点)。設定スキーマはバージョンにより変わる可能性があります。
実際の設定例:TypeScript + Next.jsプロジェクト
実際によく使われる設定パターンを示します。以下は.ai/AGENTS.mdの実践的な記述例です。
# プロジェクト概要
## アーキテクチャ
Next.js 15 App Router + TypeScript 5.x + Prisma + PostgreSQL。
フロントエンドはTailwind CSS。APIはNext.js Route Handlers。
## コーディング規約
### TypeScript
- strictモードを必ず有効にすること
- `any`型の使用禁止。不明な型は`unknown`を使う
- 型ガードを活用してランタイムエラーを防ぐ
### ファイル構造
- コンポーネントは `components/` に配置
- ページは `app/` のApp Router規約に従う
- ユーティリティ関数は `lib/utils/` に集約
### 命名規則
- コンポーネント: PascalCase(例: UserCard.tsx)
- ユーティリティ関数: camelCase(例: formatDate.ts)
- 定数: UPPER_SNAKE_CASE(例: MAX_RETRY_COUNT)
## テスト
- Vitest + Testing Libraryを使用
- コンポーネントテストは `*.test.tsx`
- ユニットテストは `*.test.ts`
- テストカバレッジ目標: 80%以上
## Git規約
- コミットメッセージはConventional Commits形式
- feat: 新機能
- fix: バグ修正
- docs: ドキュメント
- chore: その他
- PRは1機能1PR
## 禁止事項
- console.logの本番コードへの混入
- ハードコードされたAPIキーや認証情報
- `// @ts-ignore` の乱用(コメントで理由を必ず記載)
このAGENTS.mdを起点にlnai syncを実行すると、Claude Code用のCLAUDE.md、Cursor用の.cursor/rules/project.mdc、GitHub Copilot用の.github/copilot-instructions.mdが同時に生成されます。
チーム開発でのワークフロー
LNAIをチームで活用する際の推奨ワークフローを紹介します。
初期セットアップ
# リポジトリをクローンした後
git clone your-repo
cd your-repo
# LNAIをインストールして設定を展開
npm install -g lnai
lnai sync
チームメンバーはlnai syncの1コマンドで、自分が使うツール向けの設定ファイルがローカルに展開されます。
設定変更のフロー
# 1. .ai/AGENTS.md を編集して規約を追加
vim .ai/AGENTS.md
# 2. バリデーション
lnai validate
# 3. 全ツールに同期
lnai sync
# 4. .ai/ ディレクトリをコミット(生成ファイルは.gitignoreにより除外)
git add .ai/
git commit -m "docs: AIコーディングツール設定にunit test規約を追加"
CIでの自動同期
GitHub Actionsでlnai syncをCIに組み込むことも可能です。
# .github/workflows/lnai-sync.yml
name: Sync AI Config
on:
push:
paths:
- '.ai/**'
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install LNAI
run: npm install -g lnai
- name: Sync configs
run: lnai sync
- name: Commit generated files
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
git diff --staged --quiet || git commit -m "chore: auto-sync AI tool configs"
git push
動作環境: GitHub Actions ubuntu-latest, Node.js 20
注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
LNAI vs 代替アプローチの比較
LNAIと代替手段を正直に比較します。全員がLNAIを使うべきとは言いません。
| アプローチ | メリット | デメリット | おすすめの状況 |
|---|---|---|---|
| LNAI | 完全自動化、チーム標準化しやすい | npm依存、学習コスト | 3ツール以上を常用するチーム |
| AGENTS.md 単体 | ツール不要、最も汎用的 | ツール固有設定が書けない | Codex/Cursor中心で1-2ツール |
| シンボリックリンク | シンプル、依存なし | 形式が違うと使えない、手動管理 | 個人開発・同形式のツール間 |
| dotfiles管理(chezmoi等) | 環境全体を管理できる | プロジェクト単位の管理が難しい | 個人のグローバル設定管理 |
| 手動管理 | 完全にコントロールできる | ツールが増えると維持困難 | 1-2ツールのみ使用 |
HackerNewsのコメントにあったように、「AGENTS.mdのシンボリックリンクで十分」というケースも確かに存在します。ただしClaude CodeはAGENTS.mdを標準ではCLAUDE.mdの代替として読まないため、Claude Codeを使うチームではLNAIか手動管理が現実的な選択肢です。
正直にお伝えすると、LNAIはまだ開発初期段階(v0.x系)です。設定スキーマが変わる可能性があり、アップデート時に設定ファイルの見直しが必要になることもあります。
【要注意】よくある失敗パターンと回避策
失敗1:既存の設定ファイルを確認せずにsyncを実行する
❌ プロジェクトにCLAUDE.mdや.cursor/rules/が既にある状態でいきなりlnai syncを実行
⭕ 実行前に既存の設定ファイルを.ai/AGENTS.mdにマイグレーションしてからlnai sync
なぜ重要か: LNAIは孤立した設定ファイルを削除するため、既存の設定が消える場合があります。初回は必ずバックアップを取ること。
失敗2:ツール固有の設定をAGENTS.mdに書いてしまう
❌ Claude Code固有のMCP設定やCursor固有のスコープ設定をAGENTS.mdに混在させる
⭕ 共通ルールはAGENTS.mdに、ツール固有設定はsettings.jsonまたは別ファイルに分離する
なぜ重要か: AGENTS.mdは全ツールに配布されます。Claude Code固有の設定をCursorに配布すると、混乱の原因になります。
失敗3:生成ファイルを直接編集してしまう
❌ 生成されたCLAUDE.mdや.cursor/rules/project.mdcを直接編集する
⭕ 必ず.ai/AGENTS.mdを編集してからlnai syncを実行
なぜ重要か: 次のlnai syncで直接編集した内容が上書きされます。
失敗4:npmのグローバルインストールをチームで強制する
❌ npm install -g lnaiをオンボーディングドキュメントに記載するだけ
⭕ package.jsonのdevDependenciesに追加してnpxで実行する形にする
{
"devDependencies": {
"lnai": "latest"
},
"scripts": {
"ai:sync": "lnai sync",
"ai:validate": "lnai validate"
}
}
なぜ重要か: グローバルインストールはバージョン管理が難しく、チームメンバーによってバージョンが異なるとトラブルの原因になります。
AIツール設定の今後:AGENTS.md標準化の動き
LNAIが注目される背景には、AGENTS.mdの標準化という業界トレンドがあります。
AGENTS.mdは元々OpenAIのCodex CLIが採用したフォーマットですが、現在はGitHub Copilot、Cursor、Windsurf、Ampなど60,000以上のOSSプロジェクトに採用されています。Claude CodeはまだAGENTS.mdを直接読まず(CLAUDE.mdが優先)、Gemini CLIはGEMINI.mdを持ちますが、業界全体では「ひとつの共通標準に収束する」方向性が見えています。
LNAIが採用している.ai/ディレクトリという設計は、将来の標準化に備えた合理的なアプローチです。仮にAGENTS.mdが業界標準になったとしても、.ai/AGENTS.mdをそのまま使い続けられます。
ツール比較全般については、AIエージェント構築ツール比較2026もあわせて参照してください。
あわせて読みたい
- AIコーディングツールで開発は速くなるのか?2026年最新研究が示す意外な結果 — AIコーディングツールの生産性効果を検証した最新研究
- Vite 8.0正式リリース|Rust製Rolldownで本番ビルド最大87%削減 — Vite 8.0のRolldownで開発ビルドも高速化
参考・出典
- LNAI 公式サイト — lnai.sh(参照日: 2026-03-13)
- LNAI GitHub リポジトリ — KrystianJonca/lnai(参照日: 2026-03-13)
- LNAI – Define AI coding tool configs once, sync to Claude, Cursor, Codex, etc. — Hacker News(参照日: 2026-03-13)
- CLAUDE.md, AGENTS.md, and Every AI Config File Explained — DeployHQ(参照日: 2026-03-13)
- AGENTS.md: Complete Guide to AI Coding Agent Config Files — VibeCoding(参照日: 2026-03-13)
まとめ:今日から始める3つのアクション
- 今日やること:
npm install -g lnai→lnai init→.ai/AGENTS.mdに既存のコーディング規約をコピー →lnai sync。所要時間10分で全ツールに反映されます。 - 今週中: チームメンバーに共有して
package.jsonにlnaiをdevDependencyとして追加。lnai validateをpre-commitフックに追加してみましょう。 - 今月中: GitHub ActionsでCI自動同期を設定。
.ai/の変更がpushされたら自動でsyncが走る仕組みにすれば、メンテナンスコストはほぼゼロになります。
あわせて読みたい:
- AIエージェント構築完全ガイド2026 — AIエージェントの設計パターンと構築の基本
- AIエージェント構築ツール比較2026 — Dify・n8n・LangChain等の選び方
この記事はAIgent Lab編集部がお届けしました。
あわせて読みたい: Windsurf Wave 13の新機能 / JetBrains Junie解説