rulesync 0.59.0 → 0.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-DJWXF2WO.js → chunk-2TFEIJOG.js} +1 -1
- package/dist/{chunk-LIV53UU5.js → chunk-55OU7KJU.js} +1 -1
- package/dist/{chunk-S3GB3VQK.js → chunk-5BYJMDCI.js} +1 -1
- package/dist/{chunk-5SRMJNDW.js → chunk-7Q5JNJJW.js} +1 -1
- package/dist/{chunk-EG7LNNMW.js → chunk-GJ3NMGAT.js} +1 -1
- package/dist/{chunk-VYO76WDU.js → chunk-QP2BI4DF.js} +1 -1
- package/dist/{chunk-OCK47GE7.js → chunk-YGX4XO3M.js} +1 -1
- package/dist/{chunk-3YQ42A7G.js → chunk-ZOVBWPWK.js} +1 -1
- package/dist/{claudecode-CRSXMPS5.js → claudecode-W56JJONQ.js} +2 -2
- package/dist/{cline-O67TEUFW.js → cline-SEVFH54V.js} +2 -2
- package/dist/{codexcli-S7VDKBI2.js → codexcli-Q34DZAEO.js} +2 -2
- package/dist/{cursor-EXX2Q5MB.js → cursor-PT2RUL4U.js} +2 -2
- package/dist/{geminicli-K3FKXDKP.js → geminicli-AUNY2MDS.js} +2 -2
- package/dist/index.cjs +2 -2
- package/dist/index.js +16 -16
- package/dist/{junie-4SNWC452.js → junie-YL5UL6FE.js} +2 -2
- package/dist/{windsurf-NVCRKFHF.js → windsurf-RLTNFHLL.js} +2 -2
- package/package.json +3 -1
- package/README.ja.md +0 -930
|
@@ -176,7 +176,7 @@ var MCP_GENERATOR_REGISTRY = {
|
|
|
176
176
|
},
|
|
177
177
|
junie: {
|
|
178
178
|
target: "junie",
|
|
179
|
-
configPaths: [".junie/mcp
|
|
179
|
+
configPaths: [".junie/mcp/mcp.json"],
|
|
180
180
|
serverTransform: (server, serverName) => {
|
|
181
181
|
const junieServer = {
|
|
182
182
|
name: serverName
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
generateGeminiCliMcp,
|
|
3
3
|
generateGeminiCliMcpConfiguration
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-7Q5JNJJW.js";
|
|
5
|
+
import "./chunk-YGX4XO3M.js";
|
|
6
6
|
import "./chunk-AUUSMVCT.js";
|
|
7
7
|
export {
|
|
8
8
|
generateGeminiCliMcp,
|
package/dist/index.cjs
CHANGED
|
@@ -437,7 +437,7 @@ var init_shared_factory = __esm({
|
|
|
437
437
|
},
|
|
438
438
|
junie: {
|
|
439
439
|
target: "junie",
|
|
440
|
-
configPaths: [".junie/mcp
|
|
440
|
+
configPaths: [".junie/mcp/mcp.json"],
|
|
441
441
|
serverTransform: (server, serverName) => {
|
|
442
442
|
const junieServer = {
|
|
443
443
|
name: serverName
|
|
@@ -5150,7 +5150,7 @@ async function watchCommand() {
|
|
|
5150
5150
|
|
|
5151
5151
|
// src/cli/index.ts
|
|
5152
5152
|
var program = new import_commander.Command();
|
|
5153
|
-
program.name("rulesync").description("Unified AI rules management CLI tool").version("0.
|
|
5153
|
+
program.name("rulesync").description("Unified AI rules management CLI tool").version("0.60.0");
|
|
5154
5154
|
program.command("init").description("Initialize rulesync in current directory").action(initCommand);
|
|
5155
5155
|
program.command("add <filename>").description("Add a new rule file").action(addCommand);
|
|
5156
5156
|
program.command("gitignore").description("Add generated files to .gitignore").action(gitignoreCommand);
|
package/dist/index.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-5BYJMDCI.js";
|
|
3
3
|
import "./chunk-LXTA7DBA.js";
|
|
4
4
|
import "./chunk-PCATT4UZ.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-ZOVBWPWK.js";
|
|
6
6
|
import "./chunk-YTU3SCQO.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-GJ3NMGAT.js";
|
|
8
|
+
import "./chunk-QP2BI4DF.js";
|
|
9
|
+
import "./chunk-2TFEIJOG.js";
|
|
10
10
|
import "./chunk-KUGTKMNW.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-55OU7KJU.js";
|
|
12
|
+
import "./chunk-7Q5JNJJW.js";
|
|
13
|
+
import "./chunk-YGX4XO3M.js";
|
|
14
14
|
import {
|
|
15
15
|
ALL_TOOL_TARGETS,
|
|
16
16
|
RulesyncTargetsSchema,
|
|
@@ -2538,22 +2538,22 @@ async function generateMcpConfigurations(mcpConfig, baseDir, targetTools) {
|
|
|
2538
2538
|
servers,
|
|
2539
2539
|
dir
|
|
2540
2540
|
),
|
|
2541
|
-
claudecode: async (servers, dir) => (await import("./claudecode-
|
|
2541
|
+
claudecode: async (servers, dir) => (await import("./claudecode-W56JJONQ.js")).generateClaudeMcpConfiguration(
|
|
2542
2542
|
servers,
|
|
2543
2543
|
dir
|
|
2544
2544
|
),
|
|
2545
2545
|
copilot: async (servers, dir) => (await import("./copilot-MOR3HHJX.js")).generateCopilotMcpConfiguration(servers, dir),
|
|
2546
|
-
cursor: async (servers, dir) => (await import("./cursor-
|
|
2547
|
-
cline: async (servers, dir) => (await import("./cline-
|
|
2548
|
-
codexcli: async (servers, dir) => (await import("./codexcli-
|
|
2546
|
+
cursor: async (servers, dir) => (await import("./cursor-PT2RUL4U.js")).generateCursorMcpConfiguration(servers, dir),
|
|
2547
|
+
cline: async (servers, dir) => (await import("./cline-SEVFH54V.js")).generateClineMcpConfiguration(servers, dir),
|
|
2548
|
+
codexcli: async (servers, dir) => (await import("./codexcli-Q34DZAEO.js")).generateCodexMcpConfiguration(servers, dir),
|
|
2549
2549
|
roo: async (servers, dir) => (await import("./roo-L3QTTIPO.js")).generateRooMcpConfiguration(servers, dir),
|
|
2550
|
-
geminicli: async (servers, dir) => (await import("./geminicli-
|
|
2550
|
+
geminicli: async (servers, dir) => (await import("./geminicli-AUNY2MDS.js")).generateGeminiCliMcpConfiguration(
|
|
2551
2551
|
servers,
|
|
2552
2552
|
dir
|
|
2553
2553
|
),
|
|
2554
2554
|
kiro: async (servers, dir) => (await import("./kiro-YDHXY2MA.js")).generateKiroMcpConfiguration(servers, dir),
|
|
2555
|
-
junie: async (servers, dir) => (await import("./junie-
|
|
2556
|
-
windsurf: async (servers, dir) => (await import("./windsurf-
|
|
2555
|
+
junie: async (servers, dir) => (await import("./junie-YL5UL6FE.js")).generateJunieMcpConfiguration(servers, dir),
|
|
2556
|
+
windsurf: async (servers, dir) => (await import("./windsurf-RLTNFHLL.js")).generateWindsurfMcpConfiguration(
|
|
2557
2557
|
servers,
|
|
2558
2558
|
dir
|
|
2559
2559
|
)
|
|
@@ -4106,7 +4106,7 @@ async function watchCommand() {
|
|
|
4106
4106
|
|
|
4107
4107
|
// src/cli/index.ts
|
|
4108
4108
|
var program = new Command();
|
|
4109
|
-
program.name("rulesync").description("Unified AI rules management CLI tool").version("0.
|
|
4109
|
+
program.name("rulesync").description("Unified AI rules management CLI tool").version("0.60.0");
|
|
4110
4110
|
program.command("init").description("Initialize rulesync in current directory").action(initCommand);
|
|
4111
4111
|
program.command("add <filename>").description("Add a new rule file").action(addCommand);
|
|
4112
4112
|
program.command("gitignore").description("Add generated files to .gitignore").action(gitignoreCommand);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rulesync",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.60.0",
|
|
4
4
|
"description": "Unified AI rules management CLI tool that generates configuration files for various AI development tools",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -60,6 +60,7 @@
|
|
|
60
60
|
"eslint-plugin-no-type-assertion": "1.3.0",
|
|
61
61
|
"eslint-plugin-oxlint": "1.11.2",
|
|
62
62
|
"eslint-plugin-zod-import": "0.3.0",
|
|
63
|
+
"knip": "5.62.0",
|
|
63
64
|
"lint-staged": "16.1.5",
|
|
64
65
|
"o3-search-mcp": "0.0.7",
|
|
65
66
|
"oxlint": "1.11.2",
|
|
@@ -89,6 +90,7 @@
|
|
|
89
90
|
"eslint:fix": "eslint . --fix --max-warnings 0 --cache",
|
|
90
91
|
"fix": "pnpm run bcheck:fix && pnpm run oxlint:fix && pnpm run eslint:fix",
|
|
91
92
|
"generate": "pnpm run dev generate",
|
|
93
|
+
"knip": "knip",
|
|
92
94
|
"oxlint": "oxlint . --max-warnings 0",
|
|
93
95
|
"oxlint:fix": "oxlint . --fix --max-warnings 0",
|
|
94
96
|
"secretlint": "secretlint --secretlintignore .gitignore \"**/*\"",
|
package/README.ja.md
DELETED
|
@@ -1,930 +0,0 @@
|
|
|
1
|
-
# rulesync
|
|
2
|
-
|
|
3
|
-
[](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml)
|
|
4
|
-
[](https://www.npmjs.com/package/rulesync)
|
|
5
|
-
|
|
6
|
-
統一されたAIルールファイル(`.rulesync/*.md`)から、様々なAI開発ツール用の設定ファイルを自動生成するNode.js CLIツールです。既存のAIツール設定を統一形式にインポートすることも可能です。
|
|
7
|
-
|
|
8
|
-
[English](./README.md) | **日本語**
|
|
9
|
-
|
|
10
|
-
## 対応ツール
|
|
11
|
-
|
|
12
|
-
rulesyncは以下の**10のAI開発ツール**の**生成**と**インポート**の両方をサポートしています:
|
|
13
|
-
|
|
14
|
-
- **GitHub Copilot Custom Instructions** (`.github/copilot-instructions.md` + `.github/instructions/*.instructions.md`)
|
|
15
|
-
- **Cursor Project Rules** (`.cursor/rules/*.mdc` + `.cursorrules`)
|
|
16
|
-
- **Cline Rules** (`.clinerules/*.md` + `.cline/instructions.md`)
|
|
17
|
-
- **Claude Code Memory** (`./CLAUDE.md` + `.claude/memories/*.md` + **カスタムスラッシュコマンド** `.claude/commands/*.md`)
|
|
18
|
-
- **OpenAI Codex CLI** (`codex.md` + `.codex/mcp-config.json` + `.codexignore`)
|
|
19
|
-
- **AugmentCode Rules** (`.augment/rules/*.md`)
|
|
20
|
-
- **Roo Code Rules** (`.roo/rules/*.md` + `.roo/instructions.md`)
|
|
21
|
-
- **Gemini CLI** (`GEMINI.md` + `.gemini/memories/*.md` + **カスタムスラッシュコマンド** `.gemini/commands/*.md`)
|
|
22
|
-
- **JetBrains Junie Guidelines** (`.junie/guidelines.md`)
|
|
23
|
-
- **Windsurf AIコードエディター** (`.windsurf/rules/*.md` + `.codeiumignore` + `.windsurf/mcp.json`)
|
|
24
|
-
- **Kiro IDE カスタムステアリングドキュメント** (`.kiro/steering/*.md`) + **AI除外ファイル** (`.aiignore`)
|
|
25
|
-
|
|
26
|
-
## インストール
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm install -g rulesync
|
|
30
|
-
# または
|
|
31
|
-
pnpm add -g rulesync
|
|
32
|
-
# または
|
|
33
|
-
yarn global add rulesync
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## 使い始める
|
|
37
|
-
|
|
38
|
-
### 新しいプロジェクト
|
|
39
|
-
|
|
40
|
-
1. **プロジェクトを初期化:**
|
|
41
|
-
```bash
|
|
42
|
-
npx rulesync init
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
2. **`.rulesync/`ディレクトリの生成されたルールファイル**をプロジェクトのニーズに合わせて編集します
|
|
46
|
-
|
|
47
|
-
または新しいルールファイルを追加:
|
|
48
|
-
```bash
|
|
49
|
-
npx rulesync add my-custom-rules
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
3. **ツール固有の設定ファイルを生成:**
|
|
53
|
-
```bash
|
|
54
|
-
npx rulesync generate
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
4. **オプション: 生成されたファイルを.gitignoreに追加:**
|
|
58
|
-
```bash
|
|
59
|
-
npx rulesync gitignore
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### AIツール設定を持つ既存プロジェクト
|
|
63
|
-
|
|
64
|
-
既にAIツールの設定がある場合、それらをrulesync形式にインポートできます:
|
|
65
|
-
|
|
66
|
-
1. **既存設定をインポート:**
|
|
67
|
-
```bash
|
|
68
|
-
# 特定のツールからインポート(一度に1つのツールのみ指定可能)
|
|
69
|
-
npx rulesync import --claudecode # CLAUDE.mdと.claude/memories/*.mdから
|
|
70
|
-
npx rulesync import --cursor # .cursorrulesと.cursor/rules/*.mdcから
|
|
71
|
-
npx rulesync import --copilot # .github/copilot-instructions.mdから
|
|
72
|
-
npx rulesync import --cline # .cline/instructions.mdから
|
|
73
|
-
npx rulesync import --augmentcode # .augment/rules/*.mdから
|
|
74
|
-
npx rulesync import --augmentcode-legacy # .augment-guidelines(レガシー形式)から
|
|
75
|
-
npx rulesync import --roo # .roo/instructions.mdから
|
|
76
|
-
npx rulesync import --geminicli # GEMINI.mdと.gemini/memories/*.mdから
|
|
77
|
-
npx rulesync import --junie # .junie/guidelines.mdから
|
|
78
|
-
npx rulesync import --windsurf # .windsurfrules と .windsurf/rules/*.mdから
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
2. **`.rulesync/`ディレクトリのインポートされたルールを確認・編集**
|
|
82
|
-
|
|
83
|
-
3. **統合された設定を生成:**
|
|
84
|
-
```bash
|
|
85
|
-
npx rulesync generate
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
以上です!AIコーディングアシスタントが生成された設定ファイルを自動的に使用するようになります。
|
|
89
|
-
|
|
90
|
-
## rulesyncを使う理由
|
|
91
|
-
|
|
92
|
-
### 🔧 **ツールの柔軟性**
|
|
93
|
-
チームメンバーは好みのAIコーディングツールを自由に選択できます。GitHub Copilot、Cursor、Cline、Claude Codeのいずれであっても、各開発者は生産性を最大化するツールを使用できます。
|
|
94
|
-
|
|
95
|
-
### 📈 **将来を見据えた開発**
|
|
96
|
-
AI開発ツールは新しいツールが頻繁に登場し、急速に進化しています。rulesyncがあれば、ツールを切り替える際にルールを一から再定義する必要がありません。
|
|
97
|
-
|
|
98
|
-
### 🎯 **マルチツールワークフロー**
|
|
99
|
-
複数のAIツールを組み合わせたハイブリッド開発ワークフローを可能にします:
|
|
100
|
-
- GitHub Copilot:コード補完
|
|
101
|
-
- Cursor:リファクタリング
|
|
102
|
-
- Claude Code:アーキテクチャ設計
|
|
103
|
-
- Cline:デバッグ支援
|
|
104
|
-
- OpenAI Codex CLI:GPT-4を活用した開発
|
|
105
|
-
- Gemini CLI:知的コード解析
|
|
106
|
-
- JetBrains Junie:自律的AIコーディング
|
|
107
|
-
- Windsurf:高度なAIコードエディティング
|
|
108
|
-
|
|
109
|
-
### 🔓 **ベンダーロックインなし**
|
|
110
|
-
ベンダーロックインを完全に回避できます。rulesyncの使用を停止することを決定した場合でも、生成されたルールファイル(`.github/instructions/`、`.cursor/rules/`、`.clinerules/`、`CLAUDE.md`、`codex.md`、`GEMINI.md`、`.junie/guidelines.md`、`.windsurfrules`など)をそのまま使い続けることができます。
|
|
111
|
-
|
|
112
|
-
### 🎯 **ツール間の一貫性**
|
|
113
|
-
すべてのAIツールに一貫したルールを適用し、チーム全体のコード品質と開発体験を向上させます。
|
|
114
|
-
|
|
115
|
-
## Kiro IDE統合
|
|
116
|
-
|
|
117
|
-
### カスタムステアリングドキュメントとAI除外ファイル
|
|
118
|
-
|
|
119
|
-
rulesyncは、Kiro IDEの組み込みプロジェクト管理システムを補完する**カスタムステアリングドキュメント**と**AI除外ファイル**をサポートしています。
|
|
120
|
-
|
|
121
|
-
**重要**: rulesyncは、Kiro IDE自体が直接管理する方が良いコアステアリングファイル(`product.md`、`structure.md`、`tech.md`)を生成しません。代わりに、rulesyncは追加のカスタムステアリングドキュメントとAI専用除外ファイルの生成に焦点を当てています。
|
|
122
|
-
|
|
123
|
-
### rulesyncがKiroに提供する機能:
|
|
124
|
-
- **カスタムステアリングドキュメント**: `.kiro/steering/`ディレクトリの追加`.md`ファイル
|
|
125
|
-
- **AI除外ファイル**: AIアクセスからファイルを除外する`.aiignore`ファイル
|
|
126
|
-
- **プロジェクト固有のルール**: チームコーディング標準、セキュリティガイドライン、デプロイプロセス
|
|
127
|
-
- **ルール同期**: チームメンバー間でカスタムルールを一貫して保つ
|
|
128
|
-
- **インテリジェントパターン抽出**: ルールglobからAI機密パターンを自動識別
|
|
129
|
-
|
|
130
|
-
### AI除外ファイルの機能:
|
|
131
|
-
- **セキュリティ優先除外**: 機密ファイル(`.pem`、`.key`、`.env*`)を自動除外
|
|
132
|
-
- **データファイル除外**: AIを混乱させる可能性のある大きなデータファイル(`.csv`、`.sqlite`、`.zip`)を除外
|
|
133
|
-
- **機密文書**: 内部文書と機密ディレクトリを除外
|
|
134
|
-
- **パターンベース除外**: ルールglobを分析してAI機密パターンを識別
|
|
135
|
-
- **明示的除外パターン**: ルールコンテンツ内の手動除外パターン(`# IGNORE:`、`# aiignore:`)をサポート
|
|
136
|
-
|
|
137
|
-
### Kiro IDEが直接処理する機能:
|
|
138
|
-
- **コアステアリングファイル**: `product.md`(ユーザー要件)、`structure.md`(アーキテクチャ)、`tech.md`(技術スタック)
|
|
139
|
-
- **仕様管理**: `.kiro/specs/`内のフィーチャー仕様
|
|
140
|
-
- **エージェントフック**: 自動化されたコンテキスト適用
|
|
141
|
-
|
|
142
|
-
この責任分担により、rulesyncはKiroのコア機能を複製することなく、その機能を強化します。
|
|
143
|
-
|
|
144
|
-
## OpenAI Codex CLI統合
|
|
145
|
-
|
|
146
|
-
### 階層メモリシステム
|
|
147
|
-
|
|
148
|
-
rulesyncは**OpenAI Codex CLI**の階層メモリシステムをサポートしており、GPT-4を活用した開発ワークフローに持続的なコンテキストとプロジェクト固有のルールを提供します。
|
|
149
|
-
|
|
150
|
-
**主要機能**:
|
|
151
|
-
- **階層インストラクション**: グローバルユーザーインストラクション → プロジェクトレベルインストラクション → ディレクトリ固有インストラクション
|
|
152
|
-
- **MCP統合**: ラッパーサーバーを通じたModel Context Protocolサポートで機能拡張
|
|
153
|
-
- **GPT-4モデル**: GPT-4、GPT-4 Turbo、o1-mini、その他のOpenAIモデルをサポート
|
|
154
|
-
- **プレーンMarkdown形式**: 複雑なフロントマターなしのクリーンで読みやすいインストラクションファイル
|
|
155
|
-
- **コミュニティIgnoreサポート**: 機密ファイルをAIアクセスから除外するオプションの`.codexignore`ファイル
|
|
156
|
-
- **カスタムスラッシュコマンド**: Claude CodeとGemini CLI用の統一されたカスタムコマンド生成
|
|
157
|
-
|
|
158
|
-
### ファイル構造
|
|
159
|
-
|
|
160
|
-
rulesyncはOpenAI Codex CLI用に以下のファイルを生成します:
|
|
161
|
-
|
|
162
|
-
- **`codex.md`**: メインのプロジェクトレベルインストラクション(ルートルールから生成)
|
|
163
|
-
- **`<filename>.md`**: 追加のインストラクションファイル(非ルートルールから生成)
|
|
164
|
-
- **`.codex/mcp-config.json`**: ラッパーサーバー用のMCPサーバー設定
|
|
165
|
-
- **`.codexignore`**: コミュニティツールとプライバシー強化用のオプション除外ファイル
|
|
166
|
-
|
|
167
|
-
### OpenAIモデルでの使用
|
|
168
|
-
|
|
169
|
-
OpenAI Codex CLIは様々なOpenAIモデルで動作します:
|
|
170
|
-
- **GPT-4**: 複雑な推論とアーキテクチャ決定に最適
|
|
171
|
-
- **GPT-4 Turbo**: パフォーマンスとコスト効率を最適化
|
|
172
|
-
- **o1-mini**: コーディングタスクと問題解決に特化
|
|
173
|
-
- **GPT-4o-mini**: 日常的な開発タスクでバランスの取れたパフォーマンス
|
|
174
|
-
|
|
175
|
-
階層メモリシステムにより、すべてのモデルとのやり取りで一貫したコーディング標準とプロジェクトコンテキストが保証されます。
|
|
176
|
-
|
|
177
|
-
### 使用例
|
|
178
|
-
|
|
179
|
-
OpenAI Codex CLI設定ファイルを生成:
|
|
180
|
-
|
|
181
|
-
```bash
|
|
182
|
-
# OpenAI Codex CLI専用で生成
|
|
183
|
-
npx rulesync generate --codexcli
|
|
184
|
-
|
|
185
|
-
# ラッパーサーバー用のMCP設定付きで生成
|
|
186
|
-
npx rulesync generate --codexcli --verbose
|
|
187
|
-
|
|
188
|
-
# 特定のディレクトリに生成(monorepoに便利)
|
|
189
|
-
npx rulesync generate --codexcli --base-dir ./packages/frontend
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
これにより以下が作成されます:
|
|
193
|
-
- `codex.md` プロジェクトレベルのインストラクション
|
|
194
|
-
- 特定のルールカテゴリ用の追加`.md`ファイル
|
|
195
|
-
- `.codex/mcp-config.json` MCPラッパーサーバー統合用
|
|
196
|
-
- `.codexignore` プライバシー制御強化用(`.rulesyncignore`が存在する場合)
|
|
197
|
-
|
|
198
|
-
## Windsurf AI統合
|
|
199
|
-
|
|
200
|
-
### 包括的なWindsurf対応
|
|
201
|
-
|
|
202
|
-
rulesyncは**Windsurf AIコードエディター**の完全統合を提供し、ルール/メモリー管理、Model Context Protocol (MCP)サーバー、AIファイル除外の3つの主要領域をサポートしています。
|
|
203
|
-
|
|
204
|
-
**主要機能**:
|
|
205
|
-
- **統一ルールシステム**: プロジェクト固有のAIルールと開発ガイドライン
|
|
206
|
-
- **MCP統合**: Model Context Protocolサーバー設定で外部ツールとの拡張可能性
|
|
207
|
-
- **プライバシー制御**: 機密ファイルをAIアクセスから除外するスマートな除外システム
|
|
208
|
-
- **プロジェクトレベル設定**: チーム全体で一貫したAI支援開発体験
|
|
209
|
-
|
|
210
|
-
### ファイル構造
|
|
211
|
-
|
|
212
|
-
rulesyncはWindsurf用に以下のファイルを生成します:
|
|
213
|
-
|
|
214
|
-
- **`.windsurf/rules/*.md`**: プロジェクト固有のルール(ルートルールと詳細ルールの両方から生成)
|
|
215
|
-
- **`.windsurf/mcp.json`**: 外部ツール統合用のMCPサーバー設定
|
|
216
|
-
- **`.codeiumignore`**: Cascade AI分析から機密ファイルを除外するための除外ファイル
|
|
217
|
-
|
|
218
|
-
### ルール統合オプション
|
|
219
|
-
|
|
220
|
-
Windsurfは複数のルール配置戦略をサポートしています:
|
|
221
|
-
|
|
222
|
-
#### ディレクトリ方式(推奨)
|
|
223
|
-
- **場所**: `.windsurf/rules/`ディレクトリ
|
|
224
|
-
- **ファイル**: 整理されたルール分類のための複数のMarkdownファイル
|
|
225
|
-
- **利点**: より良い整理、チーム協力、バージョン管理に優しい
|
|
226
|
-
|
|
227
|
-
#### 単一ファイル方式
|
|
228
|
-
- **場所**: プロジェクトルートの`.windsurf-rules`ファイル
|
|
229
|
-
- **形式**: すべてのルールを含む単一のMarkdownファイル
|
|
230
|
-
- **用途**: シンプルなプロジェクトまたは最小限のルールセット
|
|
231
|
-
|
|
232
|
-
### Windsurf設定の生成
|
|
233
|
-
|
|
234
|
-
Windsurf設定ファイルを生成する:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
# Windsurf専用で生成
|
|
238
|
-
npx rulesync generate --windsurf
|
|
239
|
-
|
|
240
|
-
# MCPサーバー設定の詳細出力付きで生成
|
|
241
|
-
npx rulesync generate --windsurf --verbose
|
|
242
|
-
|
|
243
|
-
# 特定のディレクトリに生成(monorepoに便利)
|
|
244
|
-
npx rulesync generate --windsurf --base-dir ./packages/frontend
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
これにより以下が作成されます:
|
|
248
|
-
- `.windsurf/rules/*.md` カテゴリ別に整理されたプロジェクトルール
|
|
249
|
-
- `.windsurf/mcp.json` MCPサーバー統合用
|
|
250
|
-
- `.codeiumignore` プライバシー制御強化用(`.rulesyncignore`が存在する場合)
|
|
251
|
-
|
|
252
|
-
### アーキテクチャ改善
|
|
253
|
-
|
|
254
|
-
Windsurfサポートの実装により、rulesyncのアーキテクチャは大幅に改善されました:
|
|
255
|
-
|
|
256
|
-
- **レジストリパターン**: すべてのルールジェネレーターを統一されたレジストリシステムで管理
|
|
257
|
-
- **共有ファクトリー**: ジェネレーター間でコードの重複を削減
|
|
258
|
-
- **関心事の分離**: より良い保守性とテストのためのモジュラー設計
|
|
259
|
-
- **包括的なテスト**: 新機能の広範なテストカバレッジ
|
|
260
|
-
|
|
261
|
-
これらの改善により、すべてのAI開発ツールにおいて、より一貫性があり信頼性の高い設定生成が可能になりました。
|
|
262
|
-
|
|
263
|
-
## Claude Code統合
|
|
264
|
-
|
|
265
|
-
### カスタムスラッシュコマンドの作成
|
|
266
|
-
|
|
267
|
-
Claude Codeの組み込み`/init`コマンドを使用する代わりに、rulesync専用のカスタムスラッシュコマンドを作成することをお勧めします。
|
|
268
|
-
|
|
269
|
-
[Claude Codeスラッシュコマンドドキュメント](https://docs.anthropic.com/en/docs/claude-code/slash-commands)を参照し、以下のカスタムコマンドを追加してください:
|
|
270
|
-
|
|
271
|
-
**`.claude/commands/init-rulesync.md`**
|
|
272
|
-
|
|
273
|
-
```markdown
|
|
274
|
-
Analyze this project's codebase and update .rulesync/overview.md files as needed.
|
|
275
|
-
|
|
276
|
-
Please ensure the following frontmatter is defined in .rulesync/overview.md:
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
root: true | false # Required: Rule level (true for overview, false for details)
|
|
280
|
-
targets: ["*"] # Required: Target tools (* = all, or specific tools)
|
|
281
|
-
description: "" # Required: Rule description
|
|
282
|
-
globs: ["**/*"] # Required: File patterns
|
|
283
|
-
cursorRuleType: "always" # Optional: Cursor-specific rule type (always, manual, specificFiles, intelligently)
|
|
284
|
-
---
|
|
285
|
-
|
|
286
|
-
In .rulesync/overview.md, root should be set to true. Please write an appropriate description in the description field.
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### 統合のメリット
|
|
290
|
-
|
|
291
|
-
- **プロジェクト固有の初期化**: 各プロジェクトに最適化されたルール設定
|
|
292
|
-
- **自動ルール更新**: プロジェクトの変更に応じてルールが自動的に適応
|
|
293
|
-
- **チーム標準化**: すべてのメンバーが同じルールセットを使用
|
|
294
|
-
- **継続的改善**: プロジェクトの成長とともにルールが進化
|
|
295
|
-
|
|
296
|
-
## カスタムスラッシュコマンド
|
|
297
|
-
|
|
298
|
-
### 概要
|
|
299
|
-
|
|
300
|
-
rulesyncは、統一されたコマンド定義からClaude CodeとGemini CLI用のカスタムスラッシュコマンドを生成できます。これにより、異なるAIアシスタント間で一貫したカスタムコマンドを作成できます。
|
|
301
|
-
|
|
302
|
-
### カスタムコマンドの作成
|
|
303
|
-
|
|
304
|
-
`.rulesync/commands/`ディレクトリにコマンドファイルを作成します。各ファイルは1つのカスタムコマンドを表します:
|
|
305
|
-
|
|
306
|
-
```
|
|
307
|
-
.rulesync/
|
|
308
|
-
├── commands/
|
|
309
|
-
│ ├── init-project.md # /init-projectコマンド
|
|
310
|
-
│ ├── test-suite.md # /test-suiteコマンド
|
|
311
|
-
│ └── deploy.md # /deployコマンド
|
|
312
|
-
└── *.md # 通常のルールファイル
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
### コマンドファイルのフォーマット
|
|
316
|
-
|
|
317
|
-
コマンドファイルは、メタデータを定義するYAMLフロントマターとコマンドの説明用Markdownコンテンツを使用します:
|
|
318
|
-
|
|
319
|
-
```markdown
|
|
320
|
-
---
|
|
321
|
-
targets: ["claudecode", "geminicli"] # ターゲットツール(オプション、デフォルトは両方)
|
|
322
|
-
description: "プロジェクトセットアップを初期化" # 簡潔な説明(オプション)
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
# プロジェクトの初期化
|
|
326
|
-
|
|
327
|
-
このプロジェクトのコードベースを分析して、初期設定をセットアップします。
|
|
328
|
-
|
|
329
|
-
## 手順:
|
|
330
|
-
1. プロジェクト構造をスキャン
|
|
331
|
-
2. 技術スタックを特定
|
|
332
|
-
3. 設定ファイルを作成
|
|
333
|
-
4. 開発環境をセットアップ
|
|
334
|
-
|
|
335
|
-
以下を確認してください:
|
|
336
|
-
- すべての依存関係が適切に設定されている
|
|
337
|
-
- 環境変数がドキュメント化されている
|
|
338
|
-
- READMEにセットアップ手順が更新されている
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
### コマンド用フロントマターフィールド(v0.58.0で簡略化)
|
|
342
|
-
|
|
343
|
-
- **`targets`**(オプション): ターゲットツールの配列。デフォルトは`["claudecode", "geminicli"]`。
|
|
344
|
-
- **`description`**(オプション): コマンドの目的の簡潔な説明。
|
|
345
|
-
|
|
346
|
-
**注意**: コマンド名はファイル名(拡張子なし)から自動的に決定されるため、別途`name`フィールドは不要です。
|
|
347
|
-
|
|
348
|
-
### 生成されるコマンドファイル
|
|
349
|
-
|
|
350
|
-
コマンドは以下の場所に生成されます:
|
|
351
|
-
|
|
352
|
-
| ツール | 出力パス | フォーマット |
|
|
353
|
-
|------|------------|--------|
|
|
354
|
-
| **Claude Code** | `.claude/commands/<name>.md` | プレーンMarkdown |
|
|
355
|
-
| **Gemini CLI** | `.gemini/commands/<name>.md` | プレーンMarkdown |
|
|
356
|
-
|
|
357
|
-
### コマンドファイルの例
|
|
358
|
-
|
|
359
|
-
**テストコマンド**(`.rulesync/commands/test-all.md`):
|
|
360
|
-
```markdown
|
|
361
|
-
---
|
|
362
|
-
description: "カバレッジ付きですべてのテストスイートを実行"
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
カバレッジレポート付きでこのプロジェクトの完全なテストスイートを実行します。
|
|
366
|
-
|
|
367
|
-
以下を実行:
|
|
368
|
-
1. ユニットテスト
|
|
369
|
-
2. 統合テスト
|
|
370
|
-
3. E2Eテスト(該当する場合)
|
|
371
|
-
4. カバレッジレポートを生成
|
|
372
|
-
|
|
373
|
-
失敗がある場合は以下の詳細を報告:
|
|
374
|
-
- テスト名と場所
|
|
375
|
-
- エラーメッセージ
|
|
376
|
-
- 修正案
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
**ドキュメントコマンド**(`.rulesync/commands/update-docs.md`):
|
|
380
|
-
```markdown
|
|
381
|
-
---
|
|
382
|
-
targets: ["claudecode"]
|
|
383
|
-
description: "プロジェクトドキュメントを更新"
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
プロジェクトのドキュメントを現在のコードベースに合わせて確認・更新します。
|
|
387
|
-
|
|
388
|
-
タスク:
|
|
389
|
-
- README.mdを現在の機能で更新
|
|
390
|
-
- APIドキュメントが完全であることを確認
|
|
391
|
-
- 古い例をチェック
|
|
392
|
-
- 不足している設定オプションを追加
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
### コマンドの生成
|
|
396
|
-
|
|
397
|
-
コマンドは通常の`generate`コマンドで自動的に生成されます:
|
|
398
|
-
|
|
399
|
-
```bash
|
|
400
|
-
# コマンドを含むすべてを生成
|
|
401
|
-
npx rulesync generate
|
|
402
|
-
|
|
403
|
-
# Claude Codeのみ生成(コマンドを含む)
|
|
404
|
-
npx rulesync generate --claudecode
|
|
405
|
-
|
|
406
|
-
# Gemini CLIのみ生成(コマンドを含む)
|
|
407
|
-
npx rulesync generate --geminicli
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
### コマンドのベストプラクティス
|
|
411
|
-
|
|
412
|
-
1. **コマンドをフォーカスする**: 各コマンドは単一の明確な目的を持つべき
|
|
413
|
-
2. **説明的な名前を使用**: コマンド名は何をするかを明確に示すべき
|
|
414
|
-
3. **明確な指示を含める**: コマンド本文にステップバイステップのガイダンスを提供
|
|
415
|
-
4. **適切にターゲット設定**: コマンドの機能をサポートするツールのみをターゲットに
|
|
416
|
-
5. **期待される結果を文書化**: 何が達成されるべきかを指定
|
|
417
|
-
|
|
418
|
-
## 使用方法
|
|
419
|
-
|
|
420
|
-
### 1. 初期化
|
|
421
|
-
|
|
422
|
-
```bash
|
|
423
|
-
npx rulesync init
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
これにより、サンプルルールファイルを含む`.rulesync/`ディレクトリと、オプションでカスタムスラッシュコマンド用の`.rulesync/commands/`ディレクトリが作成されます。
|
|
427
|
-
|
|
428
|
-
### 2. ルールファイルの編集
|
|
429
|
-
|
|
430
|
-
`.rulesync/`ディレクトリ内の各Markdownファイルでメタデータをフロントマターで定義します。詳細な例については、下記の[ファイル例](#ファイル例)セクションを参照してください。
|
|
431
|
-
|
|
432
|
-
### ルールレベル
|
|
433
|
-
|
|
434
|
-
rulesyncは2レベルのルールシステムを使用します:
|
|
435
|
-
|
|
436
|
-
- **root: true**: プロジェクト全体の概要とポリシー
|
|
437
|
-
- プロジェクトごとに**1つ**のrootファイルのみ許可
|
|
438
|
-
- 高レベルのガイドラインとプロジェクトコンテキストを含む
|
|
439
|
-
- **root: false**: 具体的な実装ルールと詳細なガイドライン
|
|
440
|
-
- 複数の非rootファイルが許可
|
|
441
|
-
- 具体的なコーディングルール、命名規約などを含む
|
|
442
|
-
|
|
443
|
-
#### ツール固有の動作
|
|
444
|
-
|
|
445
|
-
各AIツールはルールレベルを異なって処理します:
|
|
446
|
-
|
|
447
|
-
| ツール | ルートルール | 非ルートルール | 特別な動作 |
|
|
448
|
-
| ------------------ | ------------------ | ------------------------ | -------------------------------------------------------------------- |
|
|
449
|
-
| **Claude Code** | `./CLAUDE.md` | `.claude/memories/*.md` | CLAUDE.mdが詳細ファイルへの`@filename`参照を含む |
|
|
450
|
-
| **Cursor** | `cursorRuleType: always` | `cursorRuleType: specificFiles` (globs指定時)<br>`cursorRuleType: intelligently` (description指定時)<br>`cursorRuleType: manual` (デフォルト) | コンテンツ解析に基づく高度なルールタイプシステム |
|
|
451
|
-
| **GitHub Copilot** | 標準フォーマット | 標準フォーマット | すべてのルールがフロントマター付きの同じフォーマットを使用 |
|
|
452
|
-
| **Cline** | 標準フォーマット | 標準フォーマット | すべてのルールがプレーンMarkdownフォーマットを使用 |
|
|
453
|
-
| **Roo Code** | 標準フォーマット | 標準フォーマット | すべてのルールが説明ヘッダー付きのプレーンMarkdownフォーマットを使用 |
|
|
454
|
-
| **Gemini CLI** | `GEMINI.md` | `.gemini/memories/*.md` | GEMINI.mdがメモリファイルへの`@filename`参照を含む |
|
|
455
|
-
| **Windsurf** | `.windsurf/rules/*.md` | `.windsurf/rules/*.md` | 包括的統合:MCP設定、ignoreファイル、プレーンMarkdownフォーマット |
|
|
456
|
-
|
|
457
|
-
### 3. 設定ファイルの生成
|
|
458
|
-
|
|
459
|
-
```bash
|
|
460
|
-
# すべてのツール用に生成
|
|
461
|
-
npx rulesync generate
|
|
462
|
-
|
|
463
|
-
# 特定のツール用に生成
|
|
464
|
-
npx rulesync generate --copilot
|
|
465
|
-
npx rulesync generate --cursor
|
|
466
|
-
npx rulesync generate --cline
|
|
467
|
-
npx rulesync generate --claudecode
|
|
468
|
-
npx rulesync generate --codexcli
|
|
469
|
-
npx rulesync generate --augmentcode
|
|
470
|
-
npx rulesync generate --roo
|
|
471
|
-
npx rulesync generate --geminicli
|
|
472
|
-
npx rulesync generate --junie
|
|
473
|
-
npx rulesync generate --windsurf
|
|
474
|
-
npx rulesync generate --kiro
|
|
475
|
-
|
|
476
|
-
# クリーンビルド(既存ファイルを最初に削除)
|
|
477
|
-
npx rulesync generate --delete
|
|
478
|
-
|
|
479
|
-
# 特定ツール用のクリーンビルド
|
|
480
|
-
npx rulesync generate --copilot --cursor --codexcli --windsurf --delete
|
|
481
|
-
|
|
482
|
-
# 詳細出力
|
|
483
|
-
npx rulesync generate --verbose
|
|
484
|
-
npx rulesync generate --delete --verbose
|
|
485
|
-
|
|
486
|
-
# 特定のベースディレクトリに生成(monorepoサポート)
|
|
487
|
-
npx rulesync generate --base-dir ./packages/frontend
|
|
488
|
-
npx rulesync generate --base-dir ./packages/frontend,./packages/backend
|
|
489
|
-
npx rulesync generate --base-dir ./apps/web,./apps/api,./packages/shared
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
#### 生成オプション
|
|
493
|
-
|
|
494
|
-
- `--delete`: 新しいファイルを作成する前に既存の生成済みファイルをすべて削除
|
|
495
|
-
- `--verbose`: 生成プロセス中に詳細出力を表示
|
|
496
|
-
- `--copilot`, `--cursor`, `--cline`, `--claudecode`, `--codexcli`, `--augmentcode`, `--roo`, `--geminicli`, `--junie`, `--windsurf`, `--kiro`: 指定されたツールのみ生成
|
|
497
|
-
- `--base-dir <paths>`: 指定されたベースディレクトリに設定ファイルを生成(複数パスの場合はカンマ区切り)。異なるプロジェクトディレクトリにツール固有の設定を生成したいmonorepoセットアップに便利。
|
|
498
|
-
- `--config <path>`: 特定の設定ファイルを使用
|
|
499
|
-
- `--no-config`: 設定ファイルの読み込みを無効化
|
|
500
|
-
|
|
501
|
-
### 4. 既存設定のインポート
|
|
502
|
-
|
|
503
|
-
プロジェクトに既存のAIツール設定がある場合、rulesync形式にインポートできます:
|
|
504
|
-
|
|
505
|
-
```bash
|
|
506
|
-
# 既存のAIツール設定からインポート
|
|
507
|
-
npx rulesync import --claudecode # CLAUDE.mdと.claude/memories/*.mdからインポート
|
|
508
|
-
npx rulesync import --cursor # .cursorrulesと.cursor/rules/*.mdからインポート
|
|
509
|
-
npx rulesync import --copilot # .github/copilot-instructions.mdと.github/instructions/*.instructions.mdからインポート
|
|
510
|
-
npx rulesync import --cline # .cline/instructions.mdからインポート
|
|
511
|
-
npx rulesync import --augmentcode # .augment/rules/*.mdからインポート
|
|
512
|
-
npx rulesync import --roo # .roo/instructions.mdからインポート
|
|
513
|
-
npx rulesync import --geminicli # GEMINI.mdと.gemini/memories/*.mdからインポート
|
|
514
|
-
npx rulesync import --junie # .junie/guidelines.mdからインポート
|
|
515
|
-
npx rulesync import --windsurf # .windsurfrules と .windsurf/rules/*.mdからインポート
|
|
516
|
-
|
|
517
|
-
# 各ツールを個別にインポート
|
|
518
|
-
npx rulesync import --claudecode
|
|
519
|
-
npx rulesync import --cursor
|
|
520
|
-
npx rulesync import --copilot
|
|
521
|
-
|
|
522
|
-
# インポート時の詳細出力
|
|
523
|
-
npx rulesync import --claudecode --verbose
|
|
524
|
-
```
|
|
525
|
-
|
|
526
|
-
**拡張インポート機能** (v0.58.0以降):
|
|
527
|
-
- **上書き保護**: 既存の`.rulesync/`ファイルを上書きすることなく安全にインポート
|
|
528
|
-
- **コマンドディレクトリサポート**: サポートするツール(Claude Code、Gemini CLI)からカスタムスラッシュコマンドを自動検出・インポート
|
|
529
|
-
- **改善された整理**: 説明的な名前と適切な分類による、より整理されたルールファイルの作成
|
|
530
|
-
- **MCP設定インポート**: 利用可能な場合、Model Context Protocol設定をインポート
|
|
531
|
-
|
|
532
|
-
importコマンドの動作:
|
|
533
|
-
- カスタムパーサーを使用して各AIツールの既存設定ファイルをパース
|
|
534
|
-
- 適切なフロントマターメタデータを付けてrulesync形式に変換
|
|
535
|
-
- インポートしたコンテンツと適切なルール分類で新しい`.rulesync/*.md`ファイルを作成
|
|
536
|
-
- カスタムコマンドを`.rulesync/commands/`ディレクトリにインポート(Claude Code、Gemini CLI)
|
|
537
|
-
- ファイル名の競合を避けるためツール固有のプレフィックスを使用(例:`claudecode-overview.md`、`cursor-custom-rules.md`)
|
|
538
|
-
- 競合が発生した場合はユニークなファイル名を生成
|
|
539
|
-
- YAMLフロントマター付きのCursorのMDCファイルなど複雑なフォーマットをサポート
|
|
540
|
-
- 複数ファイルのインポート(例:`.claude/memories/`ディレクトリのすべてのファイル)に対応
|
|
541
|
-
- 利用可能な場合、MCP設定を`.rulesync/.mcp.json`にインポート
|
|
542
|
-
|
|
543
|
-
### Cursorインポートの詳細
|
|
544
|
-
|
|
545
|
-
Cursorからのインポートでは、以下の4つのルールタイプが自動的に識別されます:
|
|
546
|
-
|
|
547
|
-
1. **always** (`cursorRuleType: always`)
|
|
548
|
-
- 条件: `alwaysApply: true` が設定されている場合
|
|
549
|
-
- 変換: ルートルール(`root: false`)としてインポート、`globs: ["**/*"]`を設定
|
|
550
|
-
|
|
551
|
-
2. **manual** (`cursorRuleType: manual`)
|
|
552
|
-
- 条件: description空 + globs空 + `alwaysApply: false`
|
|
553
|
-
- 変換: 空のglobsパターンでインポート(手動適用ルール)
|
|
554
|
-
|
|
555
|
-
3. **specificFiles** (`cursorRuleType: specificFiles`)
|
|
556
|
-
- 条件: globs指定あり(description有無問わず)
|
|
557
|
-
- 変換: 指定されたglobsパターンを配列として保持、descriptionは空文字に設定
|
|
558
|
-
|
|
559
|
-
4. **intelligently** (`cursorRuleType: intelligently`)
|
|
560
|
-
- 条件: description指定あり + globs空
|
|
561
|
-
- 変換: descriptionを保持、空のglobsパターンを設定
|
|
562
|
-
|
|
563
|
-
#### エッジケース処理
|
|
564
|
-
- **description非空 + globs非空の場合**: `specificFiles`として処理(globsパターンを優先)
|
|
565
|
-
- **判定条件に該当しない場合**: `manual`として処理(デフォルト)
|
|
566
|
-
|
|
567
|
-
#### サポートファイル
|
|
568
|
-
- `.cursorrules`(レガシー形式)
|
|
569
|
-
- `.cursor/rules/*.mdc`(モダンMDC形式)
|
|
570
|
-
- `.cursorignore`(除外パターン)
|
|
571
|
-
- `.cursor/mcp.json`(MCPサーバー設定)
|
|
572
|
-
|
|
573
|
-
### 設定ファイル
|
|
574
|
-
|
|
575
|
-
rulesyncは、繰り返しコマンドライン引数を避けるために設定ファイルをサポートしています。設定は(優先順位順に)以下から読み込まれます:
|
|
576
|
-
|
|
577
|
-
1. `--config`フラグで指定されたパス
|
|
578
|
-
2. `rulesync.jsonc` (コメント付きJSONC形式)
|
|
579
|
-
3. `rulesync.ts` (TypeScript形式)
|
|
580
|
-
4. `rulesync.config.ts`
|
|
581
|
-
5. `rulesync.config.jsonc`
|
|
582
|
-
6. `package.json` (`"rulesync"`フィールド内)
|
|
583
|
-
|
|
584
|
-
#### 設定ファイルの例
|
|
585
|
-
|
|
586
|
-
**JSONC形式 (`rulesync.jsonc`):**
|
|
587
|
-
```jsonc
|
|
588
|
-
{
|
|
589
|
-
// 設定を生成するツールのリスト
|
|
590
|
-
"targets": ["copilot", "cursor", "claudecode", "codexcli"],
|
|
591
|
-
|
|
592
|
-
// 生成から除外するツール(targetsをオーバーライド)
|
|
593
|
-
"exclude": ["roo"],
|
|
594
|
-
|
|
595
|
-
// 特定ツール用のカスタム出力パス
|
|
596
|
-
"outputPaths": {
|
|
597
|
-
"copilot": ".github/copilot-instructions.md"
|
|
598
|
-
},
|
|
599
|
-
|
|
600
|
-
// 生成用のベースディレクトリまたはディレクトリ群
|
|
601
|
-
"baseDir": "./packages",
|
|
602
|
-
|
|
603
|
-
// 生成前に既存ファイルを削除
|
|
604
|
-
"delete": false,
|
|
605
|
-
|
|
606
|
-
// 詳細出力を有効化
|
|
607
|
-
"verbose": true,
|
|
608
|
-
|
|
609
|
-
// ルールファイルを含むディレクトリ
|
|
610
|
-
"aiRulesDir": ".rulesync",
|
|
611
|
-
|
|
612
|
-
// カスタムコマンドを含むディレクトリ(オプション)
|
|
613
|
-
"commandsDir": ".rulesync/commands",
|
|
614
|
-
|
|
615
|
-
// 監視設定
|
|
616
|
-
"watch": {
|
|
617
|
-
"enabled": false,
|
|
618
|
-
"interval": 1000,
|
|
619
|
-
"ignore": ["node_modules/**", ".git/**", "dist/**", "build/**"]
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
**TypeScript形式 (`rulesync.ts`):**
|
|
625
|
-
```typescript
|
|
626
|
-
import type { ConfigOptions } from "rulesync";
|
|
627
|
-
|
|
628
|
-
const config: ConfigOptions = {
|
|
629
|
-
targets: ["copilot", "cursor", "claudecode", "codexcli"],
|
|
630
|
-
exclude: ["roo"],
|
|
631
|
-
outputPaths: {
|
|
632
|
-
copilot: ".github/copilot-instructions.md"
|
|
633
|
-
},
|
|
634
|
-
baseDir: "./packages",
|
|
635
|
-
delete: false,
|
|
636
|
-
verbose: true,
|
|
637
|
-
commandsDir: ".rulesync/commands"
|
|
638
|
-
};
|
|
639
|
-
|
|
640
|
-
export default config;
|
|
641
|
-
```
|
|
642
|
-
|
|
643
|
-
#### 設定オプション
|
|
644
|
-
|
|
645
|
-
- `targets`: 設定を生成するツールの配列(デフォルトターゲットをオーバーライド)
|
|
646
|
-
- `exclude`: 生成から除外するツールの配列
|
|
647
|
-
- `outputPaths`: 特定ツール用のカスタム出力パス
|
|
648
|
-
- `baseDir`: 生成用のベースディレクトリまたはディレクトリ配列
|
|
649
|
-
- `delete`: 生成前に既存ファイルを削除(デフォルト: false)
|
|
650
|
-
- `verbose`: 詳細出力を有効化(デフォルト: false)
|
|
651
|
-
- `aiRulesDir`: ルールファイルを含むディレクトリ(デフォルト: ".rulesync")
|
|
652
|
-
- `commandsDir`: カスタムコマンドファイルを含むディレクトリ(デフォルト: ".rulesync/commands")
|
|
653
|
-
- `watch`: `enabled`、`interval`、`ignore`オプション付きの監視設定
|
|
654
|
-
- `enabled`: ファイル監視を有効化(デフォルト: false)
|
|
655
|
-
- `interval`: 監視間隔(ミリ秒、デフォルト: 1000)
|
|
656
|
-
- `ignore`: 監視中に無視するパターンの配列
|
|
657
|
-
|
|
658
|
-
#### 設定の管理
|
|
659
|
-
|
|
660
|
-
```bash
|
|
661
|
-
# 現在の設定を表示
|
|
662
|
-
npx rulesync config
|
|
663
|
-
|
|
664
|
-
# 設定ファイルを初期化
|
|
665
|
-
npx rulesync config --init
|
|
666
|
-
|
|
667
|
-
# 特定の形式で初期化
|
|
668
|
-
npx rulesync config --init --format jsonc # デフォルト、コメントをサポート
|
|
669
|
-
npx rulesync config --init --format ts # 型安全性を持つTypeScript
|
|
670
|
-
```
|
|
671
|
-
|
|
672
|
-
### 5. その他のコマンド
|
|
673
|
-
|
|
674
|
-
```bash
|
|
675
|
-
# サンプルファイルでプロジェクトを初期化
|
|
676
|
-
npx rulesync init
|
|
677
|
-
|
|
678
|
-
# 新しいルールファイルを追加
|
|
679
|
-
npx rulesync add <filename>
|
|
680
|
-
npx rulesync add typescript-rules
|
|
681
|
-
npx rulesync add security.md # .md拡張子は自動的に処理される
|
|
682
|
-
|
|
683
|
-
# ルールファイルを検証
|
|
684
|
-
npx rulesync validate
|
|
685
|
-
|
|
686
|
-
# 現在のステータスを確認
|
|
687
|
-
npx rulesync status
|
|
688
|
-
|
|
689
|
-
# ファイルを監視して自動生成
|
|
690
|
-
npx rulesync watch
|
|
691
|
-
|
|
692
|
-
# 生成されたファイルを.gitignoreに追加
|
|
693
|
-
npx rulesync gitignore
|
|
694
|
-
|
|
695
|
-
# 設定を表示または管理
|
|
696
|
-
npx rulesync config
|
|
697
|
-
npx rulesync config --init # 設定ファイルを作成
|
|
698
|
-
```
|
|
699
|
-
|
|
700
|
-
## 設定ファイル構造
|
|
701
|
-
|
|
702
|
-
```
|
|
703
|
-
.rulesync/
|
|
704
|
-
├── overview.md # プロジェクト概要 (root: true, 1つのみ)
|
|
705
|
-
├── coding-rules.md # コーディングルール (root: false)
|
|
706
|
-
├── naming-conventions.md # 命名規約 (root: false)
|
|
707
|
-
├── architecture.md # アーキテクチャガイドライン (root: false)
|
|
708
|
-
├── security.md # セキュリティルール (root: false)
|
|
709
|
-
├── custom.md # プロジェクト固有ルール (root: false)
|
|
710
|
-
└── commands/ # カスタムスラッシュコマンド (オプション)
|
|
711
|
-
├── init-project.md # /init-projectコマンド
|
|
712
|
-
└── test-all.md # /test-allコマンド
|
|
713
|
-
```
|
|
714
|
-
|
|
715
|
-
### .rulesyncignoreでファイルを除外
|
|
716
|
-
|
|
717
|
-
プロジェクトルートに`.rulesyncignore`ファイルを作成することで、特定のルールファイルを処理から除外できます。このファイルはgitignoreスタイルのパターンを使用します。
|
|
718
|
-
|
|
719
|
-
`.rulesyncignore`の例:
|
|
720
|
-
```
|
|
721
|
-
# テスト用ルールファイルを無視
|
|
722
|
-
**/*.test.md
|
|
723
|
-
|
|
724
|
-
# 一時ファイルを無視
|
|
725
|
-
tmp/**/*
|
|
726
|
-
|
|
727
|
-
# ドラフトルールを無視
|
|
728
|
-
draft-*.md
|
|
729
|
-
*-draft.md
|
|
730
|
-
```
|
|
731
|
-
|
|
732
|
-
`.rulesyncignore`が存在する場合、rulesyncは:
|
|
733
|
-
1. 処理時にマッチするファイルをスキップ
|
|
734
|
-
2. ツール固有のignoreファイルを生成:
|
|
735
|
-
- Cursor用の`.cursorignore`
|
|
736
|
-
- Cline用の`.clineignore`
|
|
737
|
-
- Roo Code用の`.rooignore`
|
|
738
|
-
- GitHub Copilot用の`.copilotignore`(コミュニティツール用)
|
|
739
|
-
- Windsurf用の`.windsurfignore`
|
|
740
|
-
- Gemini CLI用の`.aiexclude`
|
|
741
|
-
- Kiro IDE用の`.aiignore`
|
|
742
|
-
- Claude Code用に`.claude/settings.json`のpermissions.denyに`Read()`ルールを追加
|
|
743
|
-
|
|
744
|
-
### フロントマタースキーマ
|
|
745
|
-
|
|
746
|
-
各ルールファイルには以下のフィールドを含むフロントマターが必要です:
|
|
747
|
-
|
|
748
|
-
```yaml
|
|
749
|
-
---
|
|
750
|
-
root: true | false # 必須: ルールレベル (概要の場合true、詳細の場合false)
|
|
751
|
-
targets: ["*"] # 必須: ターゲットツール (* = すべて、または特定のツール)
|
|
752
|
-
description: "簡潔な説明" # 必須: ルールの説明
|
|
753
|
-
globs: ["**/*"] # 必須: ファイルパターン (配列形式)
|
|
754
|
-
cursorRuleType: "always" # オプション: Cursor固有のルールタイプ (always, manual, specificFiles, intelligently)
|
|
755
|
-
---
|
|
756
|
-
```
|
|
757
|
-
|
|
758
|
-
#### cursorRuleTypeフィールド (オプション)
|
|
759
|
-
|
|
760
|
-
Cursorツール用の追加メタデータフィールド:
|
|
761
|
-
|
|
762
|
-
- **`always`**: プロジェクト全体に常に適用されるルール
|
|
763
|
-
- **`manual`**: 手動で適用するルール(デフォルト)
|
|
764
|
-
- **`specificFiles`**: 特定のファイルパターンに自動適用されるルール
|
|
765
|
-
- **`intelligently`**: AIが判断して適用するルール
|
|
766
|
-
|
|
767
|
-
### ファイル例
|
|
768
|
-
|
|
769
|
-
**ルートファイル** (`.rulesync/overview.md`):
|
|
770
|
-
```markdown
|
|
771
|
-
---
|
|
772
|
-
root: true
|
|
773
|
-
targets: ["*"]
|
|
774
|
-
description: "プロジェクト概要と開発思想"
|
|
775
|
-
globs: ["src/**/*.ts"]
|
|
776
|
-
---
|
|
777
|
-
|
|
778
|
-
# プロジェクト開発ガイドライン
|
|
779
|
-
|
|
780
|
-
このプロジェクトはクリーンアーキテクチャの原則に従ったTypeScript-firstの開発を行っています。
|
|
781
|
-
```
|
|
782
|
-
|
|
783
|
-
**非ルートファイル** (`.rulesync/coding-rules.md`):
|
|
784
|
-
```markdown
|
|
785
|
-
---
|
|
786
|
-
root: false
|
|
787
|
-
targets: ["copilot", "cursor", "roo"]
|
|
788
|
-
description: "TypeScriptコーディング標準"
|
|
789
|
-
globs: ["**/*.ts", "**/*.tsx"]
|
|
790
|
-
---
|
|
791
|
-
|
|
792
|
-
# TypeScriptコーディングルール
|
|
793
|
-
|
|
794
|
-
- 厳密なTypeScript設定を使用
|
|
795
|
-
- オブジェクト形状にはtypeよりinterfaceを優先
|
|
796
|
-
- 意味のある変数名を使用
|
|
797
|
-
```
|
|
798
|
-
|
|
799
|
-
## 生成される設定ファイル
|
|
800
|
-
|
|
801
|
-
| ツール | 出力パス | フォーマット | ルールレベル処理 |
|
|
802
|
-
| ------------------ | ------------------------------------------------------------ | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
803
|
-
| **GitHub Copilot** | `.github/instructions/*.instructions.md` | フロントマター + Markdown | 両レベルとも同じフォーマットを使用 |
|
|
804
|
-
| **Cursor** | `.cursor/rules/*.mdc` | MDC (YAMLヘッダー + Markdown) | ルート: `cursorRuleType: always`<br>非ルート: `cursorRuleType: specificFiles` (globs指定時)<br>非ルート: `cursorRuleType: intelligently` (description指定時)<br>非ルート: `cursorRuleType: manual` (デフォルト) |
|
|
805
|
-
| **Cline** | `.clinerules/*.md` | プレーンMarkdown | 両レベルとも同じフォーマットを使用 |
|
|
806
|
-
| **Claude Code** | `./CLAUDE.md` (ルート)<br>`.claude/memories/*.md` (非ルート) | プレーンMarkdown | ルートはCLAUDE.mdに移動<br>非ルートは別メモリファイルに移動<br>CLAUDE.mdは`@filename`参照を含む |
|
|
807
|
-
| **OpenAI Codex CLI** | `codex.md` (ルート)<br>`<filename>.md` (非ルート) | プレーンMarkdown | ルートはcodex.mdに移動<br>非ルートは別インストラクションファイルに移動<br>階層メモリシステム |
|
|
808
|
-
| **AugmentCode** | `.augment/rules/*.md` | YAMLフロントマター + Markdown | ルート: `type: always`<br>非ルート: `type: auto` (description指定時) または `type: manual` (デフォルト) |
|
|
809
|
-
| **Roo Code** | `.roo/rules/*.md` | プレーンMarkdown | 両レベルとも説明ヘッダー付きの同じフォーマットを使用 |
|
|
810
|
-
| **Gemini CLI** | `GEMINI.md` (ルート)<br>`.gemini/memories/*.md` (非ルート) | プレーンMarkdown | ルートはGEMINI.mdに移動<br>非ルートは別メモリファイルに移動<br>GEMINI.mdは`@filename`参照を含む |
|
|
811
|
-
| **JetBrains Junie** | `.junie/guidelines.md` | プレーンMarkdown | すべてのルールを単一のガイドラインファイルに統合 |
|
|
812
|
-
| **Windsurf** | `.windsurf/rules/*.md` | プレーンMarkdown | 両レベルとも`.windsurf/rules/`ディレクトリに統合<br>自動生成メモリ統合を含む同じフォーマット使用 |
|
|
813
|
-
| **Kiro IDE** | `.kiro/steering/*.md` + `.aiignore` | プレーンMarkdown + 除外パターン | カスタムステアリングドキュメントで両レベルとも同じフォーマット使用<br>AI除外ファイルで機密パターンを除外 |
|
|
814
|
-
|
|
815
|
-
## バリデーション
|
|
816
|
-
|
|
817
|
-
rulesyncはルールファイルを検証し、有用なエラーメッセージを提供します:
|
|
818
|
-
|
|
819
|
-
```bash
|
|
820
|
-
npx rulesync validate
|
|
821
|
-
```
|
|
822
|
-
|
|
823
|
-
一般的なバリデーションルール:
|
|
824
|
-
- プロジェクトごとに1つのルートファイル(root: true)のみ許可
|
|
825
|
-
- すべてのフロントマターフィールドが必須で適切にフォーマットされている
|
|
826
|
-
- ファイルパターン(globs)が有効な構文を使用
|
|
827
|
-
- ターゲットツールが認識される値である
|
|
828
|
-
|
|
829
|
-
## MCP(Model Context Protocol)サポート
|
|
830
|
-
|
|
831
|
-
rulesyncは、対応するAIツール用のMCPサーバー設定も管理できます。これにより、言語サーバーやその他のMCP互換サービスを一度設定すれば、複数のAIコーディングアシスタントにデプロイできます。
|
|
832
|
-
|
|
833
|
-
### MCPをサポートするツール
|
|
834
|
-
|
|
835
|
-
- **Claude Code** (`.mcp.json`)
|
|
836
|
-
- **GitHub Copilot** (`.vscode/mcp.json`)
|
|
837
|
-
- **Cursor** (`.cursor/mcp.json`)
|
|
838
|
-
- **Cline** (`.cline/mcp.json`)
|
|
839
|
-
- **OpenAI Codex CLI** (`.codex/mcp-config.json`)
|
|
840
|
-
- **Gemini CLI** (`.gemini/settings.json`)
|
|
841
|
-
- **JetBrains Junie** (`.junie/mcp.json`)
|
|
842
|
-
- **Windsurf** (`.windsurf/mcp.json`)
|
|
843
|
-
- **Kiro IDE** (`.kiro/mcp.json`)
|
|
844
|
-
- **Roo Code** (`.roo/mcp.json`)
|
|
845
|
-
|
|
846
|
-
### MCP設定
|
|
847
|
-
|
|
848
|
-
プロジェクトに`.rulesync/.mcp.json`ファイルを作成:
|
|
849
|
-
|
|
850
|
-
```json
|
|
851
|
-
{
|
|
852
|
-
"mcpServers": {
|
|
853
|
-
"github": {
|
|
854
|
-
"command": "docker",
|
|
855
|
-
"args": [
|
|
856
|
-
"run", "-i", "--rm",
|
|
857
|
-
"-e", "GITHUB_PERSONAL_ACCESS_TOKEN",
|
|
858
|
-
"ghcr.io/github/github-mcp-server"
|
|
859
|
-
],
|
|
860
|
-
"env": {},
|
|
861
|
-
"targets": ["*"]
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
}
|
|
865
|
-
```
|
|
866
|
-
|
|
867
|
-
### MCP設定フィールド
|
|
868
|
-
|
|
869
|
-
- **`mcpServers`**: MCPサーバー設定を含むオブジェクト
|
|
870
|
-
- **`command`**: stdioベースのサーバー用の実行可能コマンド
|
|
871
|
-
- **`args`**: コマンド引数
|
|
872
|
-
- **`url`**: HTTP/SSEベースのサーバー用URL
|
|
873
|
-
- **`env`**: サーバーに渡す環境変数
|
|
874
|
-
- **`targets`**: このサーバーをデプロイするツール名の配列
|
|
875
|
-
- 特定のツール名を使用: `["claude", "cursor", "copilot"]`
|
|
876
|
-
- すべてのサポートツールにデプロイするには`["*"]`を使用
|
|
877
|
-
- 省略した場合、デフォルトですべてのツールにデプロイ
|
|
878
|
-
|
|
879
|
-
### Kiro IDE固有のMCPフィールド
|
|
880
|
-
|
|
881
|
-
Kiro IDEでは、追加の設定フィールドを使用できます:
|
|
882
|
-
|
|
883
|
-
- **`kiroAutoApprove`**: ユーザープロンプトなしで自動承認するツール名の配列
|
|
884
|
-
- **`kiroAutoBlock`**: 自動的にブロックするツール名の配列
|
|
885
|
-
|
|
886
|
-
Kiro固有フィールドの例:
|
|
887
|
-
```json
|
|
888
|
-
{
|
|
889
|
-
"mcpServers": {
|
|
890
|
-
"aws-tools": {
|
|
891
|
-
"command": "python",
|
|
892
|
-
"args": ["-m", "aws_mcp_server"],
|
|
893
|
-
"env": {
|
|
894
|
-
"AWS_PROFILE": "dev",
|
|
895
|
-
"AWS_REGION": "us-east-1"
|
|
896
|
-
},
|
|
897
|
-
"kiroAutoApprove": ["describe_instances", "list_buckets"],
|
|
898
|
-
"kiroAutoBlock": ["delete_bucket", "terminate_instances"],
|
|
899
|
-
"targets": ["kiro"]
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
}
|
|
903
|
-
```
|
|
904
|
-
|
|
905
|
-
### MCP設定の生成
|
|
906
|
-
|
|
907
|
-
MCP設定はルールファイルと一緒に生成されます:
|
|
908
|
-
|
|
909
|
-
```bash
|
|
910
|
-
# ルールとMCP設定の両方を生成
|
|
911
|
-
npx rulesync generate
|
|
912
|
-
|
|
913
|
-
# 特定のツールのみ生成
|
|
914
|
-
npx rulesync generate --claudecode --cursor --codexcli --windsurf --junie --kiro
|
|
915
|
-
|
|
916
|
-
# 特定のディレクトリに生成(monorepo)
|
|
917
|
-
npx rulesync generate --base-dir ./packages/frontend
|
|
918
|
-
```
|
|
919
|
-
|
|
920
|
-
MCP設定は各ツールの適切な場所に生成され、ツールは起動時に自動的にそれらを読み込みます。
|
|
921
|
-
|
|
922
|
-
## ライセンス
|
|
923
|
-
|
|
924
|
-
MIT License
|
|
925
|
-
|
|
926
|
-
## 貢献
|
|
927
|
-
|
|
928
|
-
Issues と Pull Requests を歓迎します!
|
|
929
|
-
|
|
930
|
-
開発環境の設定と貢献ガイドラインについては、[CONTRIBUTING.ja.md](./CONTRIBUTING.ja.md)を参照してください。
|