rulesync 0.79.0 → 1.0.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/README.md +15 -13
- package/dist/index.cjs +7 -1
- package/dist/index.js +7 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Rulesync
|
|
2
2
|
|
|
3
3
|
[](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/rulesync)
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
A Node.js CLI tool that automatically generates configuration files for various AI development tools from unified AI rule files. Features selective generation, comprehensive import/export capabilities, and supports major AI development tools with rules, commands, MCP, ignore files, and subagents. Uses the recommended `.rulesync/rules/*.md` structure, with full backward compatibility for legacy `.rulesync/*.md` layouts.
|
|
8
8
|
|
|
9
9
|
> [!NOTE]
|
|
10
|
-
> If you are interested in
|
|
10
|
+
> If you are interested in Rulesync latest news, please follow the maintainer's X(Twitter) account:
|
|
11
11
|
> [@dyoshikawa1993](https://x.com/dyoshikawa1993)
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
@@ -52,7 +52,7 @@ npx rulesync generate --targets "*" --features "*"
|
|
|
52
52
|
|
|
53
53
|
## Supported Tools and Features
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Rulesync supports both **generation** and **import** for All of the major AI coding tools:
|
|
56
56
|
|
|
57
57
|
| Tool | rules | ignore | mcp | commands | subagents |
|
|
58
58
|
|------------------------|:-----:|:------:|:-----:|:--------:|:---------:|
|
|
@@ -76,19 +76,19 @@ rulesync supports both **generation** and **import** for All of the major AI cod
|
|
|
76
76
|
|
|
77
77
|
🎮: Simulated Commands/Subagents (Experimental Feature)
|
|
78
78
|
|
|
79
|
-
## Why
|
|
79
|
+
## Why Rulesync?
|
|
80
80
|
|
|
81
81
|
### 🔧 **Tool Flexibility**
|
|
82
82
|
Team members can freely choose their preferred AI coding tools. Whether it's GitHub Copilot, Cursor, Cline, or Claude Code, each developer can use the tool that maximizes their productivity.
|
|
83
83
|
|
|
84
84
|
### 📈 **Future-Proof Development**
|
|
85
|
-
AI development tools evolve rapidly with new tools emerging frequently. With
|
|
85
|
+
AI development tools evolve rapidly with new tools emerging frequently. With Rulesync, switching between tools doesn't require redefining your rules from scratch.
|
|
86
86
|
|
|
87
87
|
### 🎯 **Multi-Tool Workflow**
|
|
88
88
|
Enable hybrid development workflows combining multiple AI tools.
|
|
89
89
|
|
|
90
90
|
### 🔓 **No Lock-in**
|
|
91
|
-
Avoid lock-in completely. If you decide to stop using
|
|
91
|
+
Avoid lock-in completely. If you decide to stop using Rulesync, you can continue using the generated rule files as-is.
|
|
92
92
|
|
|
93
93
|
### 🎯 **Consistency Across Tools**
|
|
94
94
|
Apply consistent rules across all AI tools, improving code quality and development experience for the entire team.
|
|
@@ -124,7 +124,7 @@ npx rulesync gitignore
|
|
|
124
124
|
|
|
125
125
|
## Configuration
|
|
126
126
|
|
|
127
|
-
You can configure
|
|
127
|
+
You can configure Rulesync by creating a `rulesync.jsonc` file in the root of your project.
|
|
128
128
|
|
|
129
129
|
Example:
|
|
130
130
|
|
|
@@ -137,8 +137,10 @@ Example:
|
|
|
137
137
|
// Features to generate. You can specify "*" to generate all features.
|
|
138
138
|
"features": ["rules", "ignore", "mcp", "commands", "subagents"],
|
|
139
139
|
|
|
140
|
-
// Base
|
|
141
|
-
"
|
|
140
|
+
// Base directories for generation.
|
|
141
|
+
// Basically, you can specify a `["."]` only.
|
|
142
|
+
// However, for example, if your project is a monorepo and you have to launch the AI agent at each package directory, you can specify multiple base directories.
|
|
143
|
+
"baseDirs": ["."],
|
|
142
144
|
|
|
143
145
|
// Delete existing files before generating
|
|
144
146
|
"delete": true,
|
|
@@ -162,7 +164,7 @@ Example:
|
|
|
162
164
|
---
|
|
163
165
|
root: true # true that is less than or equal to one file for overview such as `AGENTS.md`, false for details such as `.agents/memories/*.md`
|
|
164
166
|
targets: ["*"] # * = all, or specific tools
|
|
165
|
-
description: "
|
|
167
|
+
description: "Rulesync project overview and development guidelines for unified AI rules management CLI tool"
|
|
166
168
|
globs: ["**/*"] # file patterns to match (e.g., ["*.md", "*.txt"])
|
|
167
169
|
agentsmd: # agentsmd and codexcli specific rules
|
|
168
170
|
# Support for using nested AGENTS.md files for subprojects in a large monorepo.
|
|
@@ -172,13 +174,13 @@ agentsmd: # agentsmd and codexcli specific rules
|
|
|
172
174
|
subprojectPath: "path/to/subproject"
|
|
173
175
|
cursor: # cursor specific rules
|
|
174
176
|
alwaysApply: true
|
|
175
|
-
description: "
|
|
177
|
+
description: "Rulesync project overview and development guidelines for unified AI rules management CLI tool"
|
|
176
178
|
globs: ["*"]
|
|
177
179
|
---
|
|
178
180
|
|
|
179
|
-
#
|
|
181
|
+
# Rulesync Project Overview
|
|
180
182
|
|
|
181
|
-
This is
|
|
183
|
+
This is Rulesync, a Node.js CLI tool that automatically generates configuration files for various AI development tools from unified AI rule files. The project enables teams to maintain consistent AI coding assistant rules across multiple tools.
|
|
182
184
|
|
|
183
185
|
...
|
|
184
186
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -46,6 +46,7 @@ var import_node_path = require("path");
|
|
|
46
46
|
|
|
47
47
|
// src/utils/logger.ts
|
|
48
48
|
var import_consola = require("consola");
|
|
49
|
+
var isEnvTest = process.env.NODE_ENV === "test";
|
|
49
50
|
var Logger = class {
|
|
50
51
|
_verbose = false;
|
|
51
52
|
console = import_consola.consola.withDefaults({
|
|
@@ -58,22 +59,27 @@ var Logger = class {
|
|
|
58
59
|
return this._verbose;
|
|
59
60
|
}
|
|
60
61
|
info(message, ...args) {
|
|
62
|
+
if (isEnvTest) return;
|
|
61
63
|
this.console.info(message, ...args);
|
|
62
64
|
}
|
|
63
65
|
// Success (always shown)
|
|
64
66
|
success(message, ...args) {
|
|
67
|
+
if (isEnvTest) return;
|
|
65
68
|
this.console.success(message, ...args);
|
|
66
69
|
}
|
|
67
70
|
// Warning (always shown)
|
|
68
71
|
warn(message, ...args) {
|
|
72
|
+
if (isEnvTest) return;
|
|
69
73
|
this.console.warn(message, ...args);
|
|
70
74
|
}
|
|
71
75
|
// Error (always shown)
|
|
72
76
|
error(message, ...args) {
|
|
77
|
+
if (isEnvTest) return;
|
|
73
78
|
this.console.error(message, ...args);
|
|
74
79
|
}
|
|
75
80
|
// Debug level (shown only in verbose mode)
|
|
76
81
|
debug(message, ...args) {
|
|
82
|
+
if (isEnvTest) return;
|
|
77
83
|
if (this._verbose) {
|
|
78
84
|
this.console.info(message, ...args);
|
|
79
85
|
}
|
|
@@ -6228,7 +6234,7 @@ var getVersion = async () => {
|
|
|
6228
6234
|
const packageJson = await readJsonFile(packageJsonPath);
|
|
6229
6235
|
return packageJson.version;
|
|
6230
6236
|
} catch {
|
|
6231
|
-
return "0.
|
|
6237
|
+
return "1.0.0";
|
|
6232
6238
|
}
|
|
6233
6239
|
};
|
|
6234
6240
|
var main = async () => {
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ import { basename, dirname, join, relative, resolve } from "path";
|
|
|
23
23
|
|
|
24
24
|
// src/utils/logger.ts
|
|
25
25
|
import { consola } from "consola";
|
|
26
|
+
var isEnvTest = process.env.NODE_ENV === "test";
|
|
26
27
|
var Logger = class {
|
|
27
28
|
_verbose = false;
|
|
28
29
|
console = consola.withDefaults({
|
|
@@ -35,22 +36,27 @@ var Logger = class {
|
|
|
35
36
|
return this._verbose;
|
|
36
37
|
}
|
|
37
38
|
info(message, ...args) {
|
|
39
|
+
if (isEnvTest) return;
|
|
38
40
|
this.console.info(message, ...args);
|
|
39
41
|
}
|
|
40
42
|
// Success (always shown)
|
|
41
43
|
success(message, ...args) {
|
|
44
|
+
if (isEnvTest) return;
|
|
42
45
|
this.console.success(message, ...args);
|
|
43
46
|
}
|
|
44
47
|
// Warning (always shown)
|
|
45
48
|
warn(message, ...args) {
|
|
49
|
+
if (isEnvTest) return;
|
|
46
50
|
this.console.warn(message, ...args);
|
|
47
51
|
}
|
|
48
52
|
// Error (always shown)
|
|
49
53
|
error(message, ...args) {
|
|
54
|
+
if (isEnvTest) return;
|
|
50
55
|
this.console.error(message, ...args);
|
|
51
56
|
}
|
|
52
57
|
// Debug level (shown only in verbose mode)
|
|
53
58
|
debug(message, ...args) {
|
|
59
|
+
if (isEnvTest) return;
|
|
54
60
|
if (this._verbose) {
|
|
55
61
|
this.console.info(message, ...args);
|
|
56
62
|
}
|
|
@@ -6204,7 +6210,7 @@ var getVersion = async () => {
|
|
|
6204
6210
|
const packageJson = await readJsonFile(packageJsonPath);
|
|
6205
6211
|
return packageJson.version;
|
|
6206
6212
|
} catch {
|
|
6207
|
-
return "0.
|
|
6213
|
+
return "1.0.0";
|
|
6208
6214
|
}
|
|
6209
6215
|
};
|
|
6210
6216
|
var main = async () => {
|