UNPKG

rulesync

Version:

Unified AI rules management CLI tool that generates configuration files for various AI development tools

507 lines (403 loc) โ€ข 17.3 kB
# Rulesync [![CI](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml/badge.svg)](https://github.com/dyoshikawa/rulesync/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/rulesync)](https://www.npmjs.com/package/rulesync) [![npm downloads](https://img.shields.io/npm/dt/rulesync)](https://www.npmjs.com/package/rulesync) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/dyoshikawa/rulesync) [![Mentioned in Awesome Claude Code](https://awesome.re/mentioned-badge.svg)](https://github.com/hesreallyhim/awesome-claude-code) [![Mentioned in Awesome Gemini CLI](https://awesome.re/mentioned-badge.svg)](https://github.com/Piebald-AI/awesome-gemini-cli) 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. > [!NOTE] > If you are interested in Rulesync latest news, please follow the maintainer's X(Twitter) account: > [@dyoshikawa1993](https://x.com/dyoshikawa1993) ## Installation ```bash npm install -g rulesync # or pnpm add -g rulesync # or yarn global add rulesync # or bun add -g rulesync # or brew install rulesync # And then rulesync --version rulesync --help ``` ## Getting Started ```bash # Create necessary directories, sample rule files, and configuration file npx rulesync init ``` On the other hand, if you already have AI tool configurations: ```bash # Import existing files (to .rulesync/**/*) npx rulesync import --targets claudecode # From CLAUDE.md npx rulesync import --targets cursor # From .cursorrules npx rulesync import --targets copilot # From .github/copilot-instructions.md npx rulesync import --targets claudecode --features rules,mcp,commands,subagents # And more tool supports # Generate unified configurations with all features npx rulesync generate --targets "*" --features "*" ``` ## Supported Tools and Features Rulesync supports both **generation** and **import** for All of the major AI coding tools: | Tool | rules | ignore | mcp | commands | subagents | |------------------------|:-----:|:------:|:-----:|:--------:|:---------:| | AGENTS.md | โœ… | | | ๐ŸŽฎ | ๐ŸŽฎ | | Claude Code | โœ… ๐ŸŒ | โœ… | โœ… ๐ŸŒ ๐Ÿ“ฆ | โœ… ๐ŸŒ | โœ… ๐ŸŒ | | Codex CLI | โœ… ๐ŸŒ | | ๐ŸŒ | ๐ŸŒ | ๐ŸŽฎ | | Gemini CLI | โœ… ๐ŸŒ | โœ… | โœ… ๐ŸŒ | โœ… ๐ŸŒ | ๐ŸŽฎ | | GitHub Copilot | โœ… | | โœ… | โœ… | ๐ŸŽฎ | | Cursor | โœ… | โœ… | โœ… | โœ… ๐ŸŒ | ๐ŸŽฎ | | OpenCode | โœ… | | | | | | Cline | โœ… | โœ… | โœ… | | | | Roo Code | โœ… | โœ… | โœ… | โœ… | ๐ŸŽฎ | | Qwen Code | โœ… | โœ… | | | | | Kiro IDE | โœ… | โœ… | | | | | Amazon Q Developer CLI | โœ… | | โœ… | | | | JetBrains Junie | โœ… | โœ… | | | | | AugmentCode | โœ… | โœ… | | | | | Windsurf | โœ… | โœ… | | | | | Warp | โœ… | | | | | * โœ…: Supports project mode * ๐ŸŒ: Supports global mode * ๐ŸŽฎ: Supports simulated commands/subagents (Project mode only) * ๐Ÿ“ฆ: Supports modular MCP (Experimental) ## Why Rulesync? ### ๐Ÿ”ง **Tool Flexibility** 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. ### ๐Ÿ“ˆ **Future-Proof Development** AI development tools evolve rapidly with new tools emerging frequently. With Rulesync, switching between tools doesn't require redefining your rules from scratch. ### ๐ŸŽฏ **Multi-Tool Workflow** Enable hybrid development workflows combining multiple AI tools. ### ๐Ÿ”“ **No Lock-in** Avoid lock-in completely. If you decide to stop using Rulesync, you can continue using the generated rule files as-is. ### ๐ŸŽฏ **Consistency Across Tools** Apply consistent rules across all AI tools, improving code quality and development experience for the entire team. ### ๐ŸŒ **Global Mode** You can use global mode via Rulesync by enabling `--global` option. ### ๐ŸŽฎ **Simulated Commands and Subagents** Simulated commands and subagents allow you to generate simulated commands and subagents for copilot, cursor and codexcli. This is useful for shortening your prompts. ## Quick Commands ```bash # Initialize new project (recommended: organized rules structure) npx rulesync init # Import existing configurations (to .rulesync/rules/ by default) npx rulesync import --targets claudecode --features rules,ignore,mcp,commands,subagents # Generate all features for all tools (new preferred syntax) npx rulesync generate --targets "*" --features "*" # Generate specific features for specific tools npx rulesync generate --targets copilot,cursor,cline --features rules,mcp npx rulesync generate --targets claudecode --features rules,subagents # Generate only rules (no MCP, ignore files, commands, or subagents) npx rulesync generate --targets "*" --features rules # Generate simulated commands and subagents npx rulesync generate --targets copilot,cursor,codexcli --features commands,subagents --simulated-commands --simulated-subagents # Add generated files to .gitignore npx rulesync gitignore ``` ## Configuration You can configure Rulesync by creating a `rulesync.jsonc` file in the root of your project. Example: ```jsonc // rulesync.jsonc { // List of tools to generate configurations for. You can specify "*" to generate all tools. "targets": ["cursor", "claudecode", "geminicli", "opencode", "codexcli"], // Features to generate. You can specify "*" to generate all features. "features": ["rules", "ignore", "mcp", "commands", "subagents"], // Base directories for generation. // Basically, you can specify a `["."]` only. // 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. "baseDirs": ["."], // Delete existing files before generating "delete": true, // Verbose output "verbose": false, // Advanced options "global": false, // Generate for global(user scope) configuration files "simulatedCommands": false, // Generate simulated commands "simulatedSubagents": false, // Generate simulated subagents "modularMcp": false // Enable modular-mcp for context compression (experimental, Claude Code only) // Deprecated experimental options (for backward compatibility) // "experimentalGlobal": false, // "experimentalSimulateCommands": false, // "experimentalSimulateSubagents": false } ``` ## Each File Format ### `rulesync/rules/*.md` Example: ```md --- 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` targets: ["*"] # * = all, or specific tools description: "Rulesync project overview and development guidelines for unified AI rules management CLI tool" globs: ["**/*"] # file patterns to match (e.g., ["*.md", "*.txt"]) agentsmd: # agentsmd and codexcli specific rules # Support for using nested AGENTS.md files for subprojects in a large monorepo. # This option is available only if root is false. # If subprojectPath is provided, the file is located in `${subprojectPath}/AGENTS.md`. # If subprojectPath is not provided and root is false, the file is located in `.agents/memories/*.md`. subprojectPath: "path/to/subproject" cursor: # cursor specific rules alwaysApply: true description: "Rulesync project overview and development guidelines for unified AI rules management CLI tool" globs: ["*"] --- # Rulesync Project Overview 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. ... ``` ### `rulesync/commands/*.md` Example: ```md --- description: 'Review a pull request' # command description targets: ["*"] # * = all, or specific tools --- target_pr = $ARGUMENTS If target_pr is not provided, use the PR of the current branch. Execute the following in parallel: ... ``` ### `rulesync/subagents/*.md` Example: ```md --- name: planner # subagent name targets: ["*"] # * = all, or specific tools description: >- # subagent description This is the general-purpose planner. The user asks the agent to plan to suggest a specification, implement a new feature, refactor the codebase, or fix a bug. This agent can be called by the user explicitly only. claudecode: # for claudecode-specific rules model: inherit # opus, sonnet, haiku or inherit --- You are the planner for any tasks. Based on the user's instruction, create a plan while analyzing the related files. Then, report the plan in detail. You can output files to @tmp/ if needed. Attention, again, you are just the planner, so though you can read any files and run any commands for analysis, please don't write any code. ``` ### `.rulesync/mcp.json` Example: ```json { "mcpServers": { "serena": { "description": "Code analysis and semantic search MCP server", "type": "stdio", "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant", "--enable-web-dashboard", "false", "--project", "." ], "env": {} }, "context7": { "description": "Library documentation search server", "type": "stdio", "command": "npx", "args": [ "-y", "@upstash/context7-mcp" ], "env": {} } } } ``` ### `.rulesyncignore` Example: ```ignore tmp/ credentials/ ``` ## Global Mode You can use global mode via Rulesync by enabling `--global` option. It can also be called as user scope mode. Currently, supports rules and commands generation for Claude Code. Import for global files is supported for rules and commands. 1. Create an any name directory. For example, if you prefer `~/.aiglobal`, run the following command. ```bash mkdir -p ~/.aiglobal ``` 2. Initialize files for global files in the directory. ```bash cd ~/.aiglobal npx rulesync init ``` 3. Edit `~/.aiglobal/rulesync.jsonc` to enable global mode. ```jsonc { "global": true } ``` 4. Edit `~/.aiglobal/.rulesync/rules/overview.md` to your preferences. ```md --- root: true --- # The Project Overview ... ``` 5. Generate rules for global settings. ```bash # Run in the `~/.aiglobal` directory npx rulesync generate ``` > [!NOTE] > Currently, when in the directory enabled global mode: > * `rulesync.jsonc` only supports `global`, `features`, `delete` and `verbose`. `Features` can be set `"rules"` and `"commands"`. Other parameters are ignored. > * `rules/*.md` only supports single file has `root: true`, and frontmatter parameters without `root` are ignored. > * Only Claude Code is supported for global mode commands. ## Simulate Commands and Subagents Simulated commands and subagents allow you to generate simulated commands and subagents for copilot, cursor, codexcli and etc. This is useful for shortening your prompts. 1. Prepare `.rulesync/commands/*.md` and `.rulesync/subagents/*.md` for your purposes. 2. Generate simulated commands and subagents for specific tools that are included in copilot, cursor, codexcli and etc. ```bash npx rulesync generate \ --targets copilot,cursor,codexcli \ --features commands,subagents \ --simulated-commands \ --simulated-subagents ``` 3. Use simulated commands and subagents in your prompts. - Prompt examples: ```txt # Execute simulated commands. By the way, `s/` stands for `simulate/`. s/your-command # Execute simulated subagents Call your-subagent to achieve something. ``` #### Modular MCP (Experimental) Rulesync supports compressing tokens consumed by MCP servers [d-kimuson/modular-mcp](https://github.com/d-kimuson/modular-mcp) for context saving. When enabled with `--modular-mcp`, it additionally generates `modular-mcp.json`. ```bash # Enable modular-mcp via CLI npx rulesync generate --targets claudecode --features mcp --modular-mcp # Or via configuration file { "modularMcp": true } ``` When enabling modular-mcp, each MCP server must have a `description` field. Example: ```diff // .rulesync/mcp.json { "mcpServers": { "context7": { + "description": "Up-to-date documentation and code examples for libraries", "type": "stdio", "command": "npx", "args": [ "-y", "@upstash/context7-mcp" ], "env": {} } } ``` To demonstrate the effect of modular-mcp, please see the following example: <details> <summary>Example of effect</summary> Please see examples using Claude Code. When using following mcp servers: ```json // .rulesync/mcp.json { "mcpServers": { "serena": { "description": "Semantic coding tools for intelligent codebase exploration and manipulation", "type": "stdio", "command": "uvx", "args": [ "--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "ide-assistant", "--enable-web-dashboard", "false", "--project", "." ], "env": {} }, "context7": { "description": "Up-to-date documentation and code examples for libraries", "type": "stdio", "command": "npx", "args": [ "-y", "@upstash/context7-mcp" ], "env": {} }, "fetch": { "description": "This server enables LLMs to retrieve and process content from web pages, converting HTML to markdown for easier consumption.", "type": "stdio", "command": "uvx", "args": [ "mcp-server-fetch" ], "env": {} } } } ``` Once run `rulesync generate --targets claudecode --features mcp`, `/context` result on Claude Code is as follows: ``` Context Usage โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› claude-sonnet-4-5-20250929 ยท 82k/200k tokens (41%) โ› โ› โ› โ› โ› โ› โ› โ› โ›€ โ›€ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› System prompt: 2.5k tokens (1.3%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› System tools: 13.9k tokens (6.9%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› MCP tools: 15.7k tokens (7.9%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› Memory files: 5.2k tokens (2.6%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› Messages: 8 tokens (0.0%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› โ› โ› โ›ถ Free space: 118k (58.8%) โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› Autocompact buffer: 45.0k tokens (22.5%) โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› ``` On the other hand, once run `rulesync generate --targets claudecode --features mcp --modular-mcp`, `/context` result on Claude Code is as follows: ``` Context Usage โ› โ› โ› โ› โ› โ› โ› โ› โ›€ โ› claude-sonnet-4-5-20250929 ยท 68k/200k tokens (34%) โ› โ›€ โ›€ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› System prompt: 2.5k tokens (1.3%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› System tools: 13.5k tokens (6.8%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› MCP tools: 1.3k tokens (0.6%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› Memory files: 5.2k tokens (2.6%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› Messages: 8 tokens (0.0%) โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ›ถ โ› โ› โ› โ›ถ Free space: 132k (66.2%) โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› Autocompact buffer: 45.0k tokens (22.5%) โ› โ› โ› โ› โ› โ› โ› โ› โ› โ› ``` Focus on the difference of MCP tools usage. | | Context Usage| |---|---| |Disabled Modular MCP| 15.7k tokens (7.9%) | |Enabled Modular MCP| 1.3k tokens (0.6%) | So, in this case, approximately 92% reduction in token usage! </details> ## Contributing Issues and Pull Requests are welcome! For development setup: ```bash git clone https://github.com/dyoshikawa/rulesync # Should be your fork repository url actually cd rulesync pnpm i pnpm cicheck # Run code style check, type check, and tests # Manual test using current code pnpm dev generate -t claudecode -f "*" pnpm dev import -t claudecode -f "*" ``` ## License MIT License