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.
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfig,
3
3
  generateMcpConfigurationFiles
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/codexcli.ts
7
7
  function generateCodexMcp(config) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfigurationFilesFromRegistry,
3
3
  generateMcpFromRegistry
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/cursor.ts
7
7
  function generateCursorMcp(config) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfigurationFilesFromRegistry,
3
3
  generateMcpFromRegistry
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/junie.ts
7
7
  function generateJunieMcp(config) {
@@ -2,7 +2,7 @@ import {
2
2
  configWrappers,
3
3
  generateMcpConfig,
4
4
  generateMcpConfigurationFiles
5
- } from "./chunk-OCK47GE7.js";
5
+ } from "./chunk-YGX4XO3M.js";
6
6
 
7
7
  // src/generators/mcp/geminicli.ts
8
8
  function generateGeminiCliMcp(config) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfigurationFilesFromRegistry,
3
3
  generateMcpFromRegistry
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/claudecode.ts
7
7
  function generateClaudeMcp(config) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfigurationFilesFromRegistry,
3
3
  generateMcpFromRegistry
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/cline.ts
7
7
  function generateClineMcp(config) {
@@ -176,7 +176,7 @@ var MCP_GENERATOR_REGISTRY = {
176
176
  },
177
177
  junie: {
178
178
  target: "junie",
179
- configPaths: [".junie/mcp-config.json"],
179
+ configPaths: [".junie/mcp/mcp.json"],
180
180
  serverTransform: (server, serverName) => {
181
181
  const junieServer = {
182
182
  name: serverName
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  generateMcpConfigurationFilesFromRegistry,
3
3
  generateMcpFromRegistry
4
- } from "./chunk-OCK47GE7.js";
4
+ } from "./chunk-YGX4XO3M.js";
5
5
 
6
6
  // src/generators/mcp/windsurf.ts
7
7
  function generateWindsurfMcp(config) {
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateClaudeMcp,
3
3
  generateClaudeMcpConfiguration
4
- } from "./chunk-EG7LNNMW.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-GJ3NMGAT.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateClaudeMcp,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateClineMcp,
3
3
  generateClineMcpConfiguration
4
- } from "./chunk-VYO76WDU.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-QP2BI4DF.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateClineMcp,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateCodexMcp,
3
3
  generateCodexMcpConfiguration
4
- } from "./chunk-DJWXF2WO.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-2TFEIJOG.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateCodexMcp,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateCursorMcp,
3
3
  generateCursorMcpConfiguration
4
- } from "./chunk-LIV53UU5.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-55OU7KJU.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateCursorMcp,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateGeminiCliMcp,
3
3
  generateGeminiCliMcpConfiguration
4
- } from "./chunk-5SRMJNDW.js";
5
- import "./chunk-OCK47GE7.js";
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-config.json"],
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.59.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-S3GB3VQK.js";
2
+ import "./chunk-5BYJMDCI.js";
3
3
  import "./chunk-LXTA7DBA.js";
4
4
  import "./chunk-PCATT4UZ.js";
5
- import "./chunk-3YQ42A7G.js";
5
+ import "./chunk-ZOVBWPWK.js";
6
6
  import "./chunk-YTU3SCQO.js";
7
- import "./chunk-EG7LNNMW.js";
8
- import "./chunk-VYO76WDU.js";
9
- import "./chunk-DJWXF2WO.js";
7
+ import "./chunk-GJ3NMGAT.js";
8
+ import "./chunk-QP2BI4DF.js";
9
+ import "./chunk-2TFEIJOG.js";
10
10
  import "./chunk-KUGTKMNW.js";
11
- import "./chunk-LIV53UU5.js";
12
- import "./chunk-5SRMJNDW.js";
13
- import "./chunk-OCK47GE7.js";
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-CRSXMPS5.js")).generateClaudeMcpConfiguration(
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-EXX2Q5MB.js")).generateCursorMcpConfiguration(servers, dir),
2547
- cline: async (servers, dir) => (await import("./cline-O67TEUFW.js")).generateClineMcpConfiguration(servers, dir),
2548
- codexcli: async (servers, dir) => (await import("./codexcli-S7VDKBI2.js")).generateCodexMcpConfiguration(servers, dir),
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-K3FKXDKP.js")).generateGeminiCliMcpConfiguration(
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-4SNWC452.js")).generateJunieMcpConfiguration(servers, dir),
2556
- windsurf: async (servers, dir) => (await import("./windsurf-NVCRKFHF.js")).generateWindsurfMcpConfiguration(
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.59.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);
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateJunieMcp,
3
3
  generateJunieMcpConfiguration
4
- } from "./chunk-S3GB3VQK.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-5BYJMDCI.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateJunieMcp,
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  generateWindsurfMcp,
3
3
  generateWindsurfMcpConfiguration
4
- } from "./chunk-3YQ42A7G.js";
5
- import "./chunk-OCK47GE7.js";
4
+ } from "./chunk-ZOVBWPWK.js";
5
+ import "./chunk-YGX4XO3M.js";
6
6
  import "./chunk-AUUSMVCT.js";
7
7
  export {
8
8
  generateWindsurfMcp,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rulesync",
3
- "version": "0.59.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
- [![CI](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml/badge.svg)](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml)
4
- [![npm version](https://badge.fury.io/js/rulesync.svg)](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)を参照してください。