skiller 0.4.3 → 0.5.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.
Files changed (39) hide show
  1. package/README.md +171 -175
  2. package/dist/agents/AbstractAgent.js +4 -4
  3. package/dist/agents/AgentsMdAgent.js +2 -2
  4. package/dist/agents/AiderAgent.js +2 -2
  5. package/dist/agents/AmazonQCliAgent.js +4 -4
  6. package/dist/agents/AugmentCodeAgent.js +3 -3
  7. package/dist/agents/ClaudeAgent.js +1 -1
  8. package/dist/agents/CodexCliAgent.js +9 -9
  9. package/dist/agents/CopilotAgent.js +2 -2
  10. package/dist/agents/CrushAgent.js +6 -6
  11. package/dist/agents/CursorAgent.js +6 -6
  12. package/dist/agents/FirebenderAgent.js +5 -5
  13. package/dist/agents/GeminiCliAgent.js +5 -5
  14. package/dist/agents/KiloCodeAgent.js +2 -2
  15. package/dist/agents/KiroAgent.js +1 -1
  16. package/dist/agents/OpenCodeAgent.js +6 -6
  17. package/dist/agents/QwenCodeAgent.js +2 -2
  18. package/dist/agents/RooCodeAgent.js +5 -5
  19. package/dist/agents/ZedAgent.js +9 -9
  20. package/dist/cli/commands.js +8 -13
  21. package/dist/cli/handlers.js +17 -19
  22. package/dist/constants.js +6 -8
  23. package/dist/core/ConfigLoader.js +11 -19
  24. package/dist/core/FileSystemUtils.js +56 -72
  25. package/dist/core/GitignoreUtils.js +38 -38
  26. package/dist/core/SkillsProcessor.js +39 -138
  27. package/dist/core/SkillsUtils.js +1 -1
  28. package/dist/core/UnifiedConfigLoader.js +19 -17
  29. package/dist/core/agent-selection.js +2 -2
  30. package/dist/core/apply-engine.js +81 -81
  31. package/dist/core/revert-engine.js +6 -6
  32. package/dist/lib.js +25 -24
  33. package/dist/mcp/merge.js +1 -1
  34. package/dist/mcp/propagateOpenCodeMcp.js +8 -8
  35. package/dist/mcp/propagateOpenHandsMcp.js +10 -10
  36. package/dist/mcp/validate.js +3 -3
  37. package/dist/revert.js +11 -11
  38. package/dist/vscode/settings.js +6 -5
  39. package/package.json +6 -6
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # `@udecode/ruler` fork
1
+ # `skiller`
2
2
 
3
- **Fork features:**
3
+ A Claude-centric fork of [ruler](https://github.com/intellectronica/ruler) with native skills support:
4
4
 
5
5
  ## 1. CLAUDE.md @filename References
6
6
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  ## 4. Claude Root Folder
24
24
 
25
- - `ruler init --claude` creates `.claude/` instead of `.ruler/`
25
+ - Default directory is `.claude/` (no extra flags needed)
26
26
  - Skills already in `.claude/skills` (no copying)
27
27
  - Single directory for all Claude Code config
28
28
 
@@ -50,14 +50,14 @@
50
50
 
51
51
  ---
52
52
 
53
- # Ruler: Centralise Your AI Coding Assistant Instructions
53
+ # Skiller: Centralise Your AI Coding Assistant Instructions
54
54
 
55
55
  > **Beta Research Preview**
56
56
  >
57
57
  > - Please test this version carefully in your environment
58
- > - Report issues at https://github.com/udecode/ruler/issues
58
+ > - Report issues at https://github.com/udecode/skiller/issues
59
59
 
60
- ## Why Ruler?
60
+ ## Why Skiller?
61
61
 
62
62
  Managing instructions across multiple AI coding tools becomes complex as your team grows. Different agents (GitHub Copilot, Claude, Cursor, Aider, etc.) require their own configuration files, leading to:
63
63
 
@@ -67,130 +67,124 @@ Managing instructions across multiple AI coding tools becomes complex as your te
67
67
  - **Onboarding friction** for new AI tools
68
68
  - **Complex project structures** requiring context-specific instructions for different components
69
69
 
70
- Ruler solves this by providing a **single source of truth** for all your AI agent instructions, automatically distributing them to the right configuration files. With support for **nested rule loading**, Ruler can handle complex project structures with context-specific instructions for different components.
70
+ Skiller solves this by providing a **single source of truth** for all your AI agent instructions, automatically distributing them to the right configuration files. With support for **nested rule loading**, Skiller can handle complex project structures with context-specific instructions for different components.
71
71
 
72
72
  ## Core Features
73
73
 
74
- - **Centralised Rule Management**: Store all AI instructions in a dedicated `.ruler/` directory using Markdown files
75
- - **Nested Rule Loading**: Support complex project structures with multiple `.ruler/` directories for context-specific instructions
76
- - **Automatic Distribution**: Ruler applies these rules to configuration files of supported AI agents
77
- - **Targeted Agent Configuration**: Fine-tune which agents are affected and their specific output paths via `ruler.toml`
74
+ - **Centralised Rule Management**: Store all AI instructions in a dedicated `.claude/` directory using Markdown files
75
+ - **Nested Rule Loading**: Support complex project structures with multiple `.claude/` directories for context-specific instructions
76
+ - **Automatic Distribution**: Skiller applies these rules to configuration files of supported AI agents
77
+ - **Targeted Agent Configuration**: Fine-tune which agents are affected and their specific output paths via `skiller.toml`
78
78
  - **MCP Server Propagation**: Manage and distribute Model Context Protocol (MCP) server settings
79
79
  - **`.gitignore` Automation**: Keeps generated agent config files out of version control automatically
80
80
  - **Simple CLI**: Easy-to-use commands for initialising and applying configurations
81
81
 
82
82
  ## Supported AI Agents
83
83
 
84
- | Agent | Rules File(s) | MCP Configuration / Notes |
85
- | ---------------- | ------------------------------------------------ | ------------------------------------------------ |
86
- | AGENTS.md | `AGENTS.md` | (pseudo-agent ensuring root `AGENTS.md` exists) |
87
- | GitHub Copilot | `AGENTS.md` | `.vscode/mcp.json` |
88
- | Claude Code | `CLAUDE.md` (@filename references) | `.mcp.json` |
89
- | OpenAI Codex CLI | `AGENTS.md` | `.codex/config.toml` (MCP via Skillz) |
90
- | Jules | `AGENTS.md` | - |
91
- | Cursor | `AGENTS.md` | `.cursor/mcp.json` |
92
- | Windsurf | `AGENTS.md` | `.windsurf/mcp_config.json` |
93
- | Cline | `.clinerules` | - |
94
- | Crush | `CRUSH.md` | `.crush.json` |
95
- | Amp | `AGENTS.md` | - |
96
- | Amazon Q CLI | `.amazonq/rules/ruler_q_rules.md` | `.amazonq/mcp.json` |
97
- | Aider | `AGENTS.md`, `.aider.conf.yml` | `.mcp.json` |
98
- | Firebase Studio | `.idx/airules.md` | `.idx/mcp.json` |
99
- | Open Hands | `.openhands/microagents/repo.md` | `config.toml` |
100
- | Gemini CLI | `AGENTS.md` | `.gemini/settings.json` |
101
- | Junie | `.junie/guidelines.md` | - |
102
- | AugmentCode | `.augment/rules/ruler_augment_instructions.md` | - |
103
- | Kilo Code | `.kilocode/rules/ruler_kilocode_instructions.md` | `.kilocode/mcp.json` |
104
- | OpenCode | `AGENTS.md` | `opencode.json` |
105
- | Goose | `.goosehints` | - |
106
- | Qwen Code | `AGENTS.md` | `.qwen/settings.json` |
107
- | RooCode | `AGENTS.md` | `.roo/mcp.json` |
108
- | Zed | `AGENTS.md` | `.zed/settings.json` (project root, never $HOME) |
109
- | Trae AI | `.trae/rules/project_rules.md` | - |
110
- | Warp | `WARP.md` | - |
111
- | Kiro | `.kiro/steering/ruler_kiro_instructions.md` | - |
112
- | Firebender | `firebender.json` | `firebender.json` (rules and MCP in same file) |
84
+ | Agent | Rules File(s) | MCP Configuration / Notes |
85
+ | ---------------- | -------------------------------------------------- | ------------------------------------------------ |
86
+ | AGENTS.md | `AGENTS.md` | (pseudo-agent ensuring root `AGENTS.md` exists) |
87
+ | GitHub Copilot | `AGENTS.md` | `.vscode/mcp.json` |
88
+ | Claude Code | `CLAUDE.md` (@filename references) | `.mcp.json` |
89
+ | OpenAI Codex CLI | `AGENTS.md` | `.codex/config.toml` (MCP via Skillz) |
90
+ | Jules | `AGENTS.md` | - |
91
+ | Cursor | `AGENTS.md` | `.cursor/mcp.json` |
92
+ | Windsurf | `AGENTS.md` | `.windsurf/mcp_config.json` |
93
+ | Cline | `.clinerules` | - |
94
+ | Crush | `CRUSH.md` | `.crush.json` |
95
+ | Amp | `AGENTS.md` | - |
96
+ | Amazon Q CLI | `.amazonq/rules/skiller_q_rules.md` | `.amazonq/mcp.json` |
97
+ | Aider | `AGENTS.md`, `.aider.conf.yml` | `.mcp.json` |
98
+ | Firebase Studio | `.idx/airules.md` | `.idx/mcp.json` |
99
+ | Open Hands | `.openhands/microagents/repo.md` | `config.toml` |
100
+ | Gemini CLI | `AGENTS.md` | `.gemini/settings.json` |
101
+ | Junie | `.junie/guidelines.md` | - |
102
+ | AugmentCode | `.augment/rules/skiller_augment_instructions.md` | - |
103
+ | Kilo Code | `.kilocode/rules/skiller_kilocode_instructions.md` | `.kilocode/mcp.json` |
104
+ | OpenCode | `AGENTS.md` | `opencode.json` |
105
+ | Goose | `.goosehints` | - |
106
+ | Qwen Code | `AGENTS.md` | `.qwen/settings.json` |
107
+ | RooCode | `AGENTS.md` | `.roo/mcp.json` |
108
+ | Zed | `AGENTS.md` | `.zed/settings.json` (project root, never $HOME) |
109
+ | Trae AI | `.trae/rules/project_rules.md` | - |
110
+ | Warp | `WARP.md` | - |
111
+ | Kiro | `.kiro/steering/skiller_kiro_instructions.md` | - |
112
+ | Firebender | `firebender.json` | `firebender.json` (rules and MCP in same file) |
113
113
 
114
114
  ## Getting Started
115
115
 
116
116
  ### Installation
117
117
 
118
- **Global Installation (Recommended for CLI use):**
119
-
120
- ```bash
121
- npm install -g @udecode/ruler
122
- ```
123
-
124
118
  **Using `npx` (for one-off commands):**
125
119
 
126
120
  ```bash
127
- npx @udecode/ruler apply
121
+ npx skiller@latest apply
128
122
  ```
129
123
 
130
124
  ### Project Initialisation
131
125
 
132
126
  1. Navigate to your project's root directory
133
- 2. Run `ruler init`
127
+ 2. Run `skiller init`
134
128
  3. This creates:
135
129
 
136
- - `.ruler/` directory
137
- - `.ruler/AGENTS.md`: The primary starter Markdown file for your rules
138
- - `.ruler/ruler.toml`: The main configuration file for Ruler
130
+ - `.claude/` directory
131
+ - `.claude/AGENTS.md`: The primary starter Markdown file for your rules
132
+ - `.claude/skiller.toml`: The main configuration file for Skiller
139
133
 
140
- Additionally, you can create a global configuration to use when no local `.ruler/` directory is found:
134
+ Additionally, you can create a global configuration to use when no local `.claude/` directory is found:
141
135
 
142
136
  ```bash
143
- ruler init --global
137
+ skiller init --global
144
138
  ```
145
139
 
146
- The global configuration will be created to `$XDG_CONFIG_HOME/ruler` (default: `~/.config/ruler`).
140
+ The global configuration will be created to `$XDG_CONFIG_HOME/skiller` (default: `~/.config/skiller`).
147
141
 
148
142
  ## Core Concepts
149
143
 
150
- ### The `.ruler/` Directory
144
+ ### The `.claude/` Directory
151
145
 
152
146
  This is your central hub for all AI agent instructions:
153
147
 
154
148
  - **Primary File Order & Precedence**:
155
- 1. A repository root `AGENTS.md` (outside `.ruler/`) if present (highest precedence, prepended)
156
- 2. `.ruler/AGENTS.md` (new default starter file)
157
- 3. Remaining discovered `.md` files under `.ruler/` (and subdirectories) in sorted order
158
- - **Rule Files (`*.md`)**: Discovered recursively from `.ruler/` or `$XDG_CONFIG_HOME/ruler` and concatenated in the order above
149
+ 1. A repository root `AGENTS.md` (outside `.claude/`) if present (highest precedence, prepended)
150
+ 2. `.claude/AGENTS.md` (new default starter file)
151
+ 3. Remaining discovered `.md` files under `.claude/` (and subdirectories) in sorted order
152
+ - **Rule Files (`*.md`)**: Discovered recursively from `.claude/` or `$XDG_CONFIG_HOME/skiller` and concatenated in the order above
159
153
  - **Concatenation Marker**: Each file's content is prepended with `--- Source: <relative_path_to_md_file> ---` for traceability
160
- - **`ruler.toml`**: Master configuration for Ruler's behavior, agent selection, and output paths
154
+ - **`skiller.toml`**: Master configuration for Skiller's behavior, agent selection, and output paths
161
155
  - **`mcp.json`**: Shared MCP server settings
162
156
 
163
- This ordering lets you keep a short, high-impact root `AGENTS.md` (e.g. executive project summary) while housing detailed guidance inside `.ruler/`.
157
+ This ordering lets you keep a short, high-impact root `AGENTS.md` (e.g. executive project summary) while housing detailed guidance inside `.claude/`.
164
158
 
165
159
  ### Nested Rule Loading
166
160
 
167
- Ruler now supports **nested rule loading** with the `--nested` flag, enabling context-specific instructions for different parts of your project:
161
+ Skiller now supports **nested rule loading** with the `--nested` flag, enabling context-specific instructions for different parts of your project:
168
162
 
169
163
  ```
170
164
  project/
171
- ├── .ruler/ # Global project rules
165
+ ├── .claude/ # Global project rules
172
166
  │ ├── AGENTS.md
173
167
  │ └── coding_style.md
174
168
  ├── src/
175
- │ └── .ruler/ # Component-specific rules
169
+ │ └── .claude/ # Component-specific rules
176
170
  │ └── api_guidelines.md
177
171
  ├── tests/
178
- │ └── .ruler/ # Test-specific rules
172
+ │ └── .claude/ # Test-specific rules
179
173
  │ └── testing_conventions.md
180
174
  └── docs/
181
- └── .ruler/ # Documentation rules
175
+ └── .claude/ # Documentation rules
182
176
  └── writing_style.md
183
177
  ```
184
178
 
185
179
  **How it works:**
186
180
 
187
- - Discover all `.ruler/` directories in the project hierarchy
181
+ - Discover all `.claude/` directories in the project hierarchy
188
182
  - Load and concatenate rules from each directory in order
189
183
  - Decide whether nested mode is enabled using the following precedence:
190
- 1. `ruler apply --nested` (or `--no-nested`) takes top priority
191
- 2. `nested = true` in `ruler.toml`
184
+ 1. `skiller apply --nested` (or `--no-nested`) takes top priority
185
+ 2. `nested = true` in `skiller.toml`
192
186
  3. Default to disabled when neither option is provided
193
- - When a run is nested, downstream configs are forced to keep `nested = true`. If a child config attempts to disable it, Ruler keeps nested processing active and emits a warning in the logs.
187
+ - When a run is nested, downstream configs are forced to keep `nested = true`. If a child config attempts to disable it, Skiller keeps nested processing active and emits a warning in the logs.
194
188
  - Nested processing carries forward each directory's own MCP bundle and configuration settings so that generated files remain scoped to their source directories while being normalized back to the project root.
195
189
 
196
190
  > [!CAUTION]
@@ -212,7 +206,7 @@ project/
212
206
  - `project_architecture.md`
213
207
  - `security_guidelines.md`
214
208
 
215
- **Example rule file (`.ruler/python_guidelines.md`):**
209
+ **Example rule file (`.claude/python_guidelines.md`):**
216
210
 
217
211
  ```markdown
218
212
  # Python Project Guidelines
@@ -239,10 +233,10 @@ project/
239
233
  ### Primary Command
240
234
 
241
235
  ```bash
242
- ruler apply [options]
236
+ skiller apply [options]
243
237
  ```
244
238
 
245
- The `apply` command looks for `.ruler/` in the current directory tree, reading the first match. If no such directory is found, it will look for a global configuration in `$XDG_CONFIG_HOME/ruler`.
239
+ The `apply` command looks for `.claude/` in the current directory tree, reading the first match. If no such directory is found, it will look for a global configuration in `$XDG_CONFIG_HOME/skiller`.
246
240
 
247
241
  ### Options
248
242
 
@@ -250,7 +244,7 @@ The `apply` command looks for `.ruler/` in the current directory tree, reading t
250
244
  | ------------------------------ | ---------------------------------------------------------------------- |
251
245
  | `--project-root <path>` | Project root path (default: current directory). |
252
246
  | `--agents <agent1,agent2,...>` | Comma-separated agent names to target (see supported list below). |
253
- | `--config <path>` | Custom `ruler.toml` path. |
247
+ | `--config <path>` | Custom `skiller.toml` path. |
254
248
  | `--mcp` / `--with-mcp` | Enable applying MCP server configurations (default: true). |
255
249
  | `--no-mcp` | Disable applying MCP server configurations. |
256
250
  | `--mcp-overwrite` | Overwrite native MCP config instead of merging. |
@@ -268,74 +262,74 @@ The `apply` command looks for `.ruler/` in the current directory tree, reading t
268
262
  **Apply rules to all configured agents:**
269
263
 
270
264
  ```bash
271
- ruler apply
265
+ skiller apply
272
266
  ```
273
267
 
274
268
  **Apply rules only to GitHub Copilot and Claude:**
275
269
 
276
270
  ```bash
277
- ruler apply --agents copilot,claude
271
+ skiller apply --agents copilot,claude
278
272
  ```
279
273
 
280
274
  **Apply rules only to Firebase Studio:**
281
275
 
282
276
  ```bash
283
- ruler apply --agents firebase
277
+ skiller apply --agents firebase
284
278
  ```
285
279
 
286
280
  **Apply rules only to Warp:**
287
281
 
288
282
  ```bash
289
- ruler apply --agents warp
283
+ skiller apply --agents warp
290
284
  ```
291
285
 
292
286
  **Apply rules only to Trae AI:**
293
287
 
294
288
  ```bash
295
- ruler apply --agents trae
289
+ skiller apply --agents trae
296
290
  ```
297
291
 
298
292
  **Apply rules only to RooCode:**
299
293
 
300
294
  ```bash
301
- ruler apply --agents roo
295
+ skiller apply --agents roo
302
296
  ```
303
297
 
304
298
  **Use a specific configuration file:**
305
299
 
306
300
  ```bash
307
- ruler apply --config ./team-configs/ruler.frontend.toml
301
+ skiller apply --config ./team-configs/skiller.frontend.toml
308
302
  ```
309
303
 
310
304
  **Apply rules with verbose output:**
311
305
 
312
306
  ```bash
313
- ruler apply --verbose
307
+ skiller apply --verbose
314
308
  ```
315
309
 
316
310
  **Apply rules but skip MCP and .gitignore updates:**
317
311
 
318
312
  ```bash
319
- ruler apply --no-mcp --no-gitignore
313
+ skiller apply --no-mcp --no-gitignore
320
314
  ```
321
315
 
322
316
  ## Usage: The `revert` Command
323
317
 
324
- The `revert` command safely undoes all changes made by `ruler apply`, restoring your project to its pre-ruler state. It intelligently restores files from backups (`.bak` files) when available, or removes generated files that didn't exist before.
318
+ The `revert` command safely undoes all changes made by `skiller apply`, restoring your project to its pre-skiller state. It intelligently restores files from backups (`.bak` files) when available, or removes generated files that didn't exist before.
325
319
 
326
320
  ### Why Revert is Needed
327
321
 
328
322
  When experimenting with different rule configurations or switching between projects, you may want to:
329
323
 
330
- - **Clean slate**: Remove all ruler-generated files to start fresh
324
+ - **Clean slate**: Remove all skiller-generated files to start fresh
331
325
  - **Restore originals**: Revert modified files back to their original state
332
326
  - **Selective cleanup**: Remove configurations for specific agents only
333
- - **Safe experimentation**: Try ruler without fear of permanent changes
327
+ - **Safe experimentation**: Try skiller without fear of permanent changes
334
328
 
335
329
  ### Primary Command
336
330
 
337
331
  ```bash
338
- ruler revert [options]
332
+ skiller revert [options]
339
333
  ```
340
334
 
341
335
  ### Options
@@ -344,49 +338,49 @@ ruler revert [options]
344
338
  | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
345
339
  | `--project-root <path>` | Path to your project's root (default: current directory) |
346
340
  | `--agents <agent1,agent2,...>` | Comma-separated list of agent names to revert (agentsmd, aider, amazonqcli, amp, augmentcode, claude, cline, codex, copilot, crush, cursor, firebase, firebender, gemini-cli, goose, jules, junie, kilocode, kiro, opencode, openhands, qwen, roo, trae, warp, windsurf, zed) |
347
- | `--config <path>` | Path to a custom `ruler.toml` configuration file |
341
+ | `--config <path>` | Path to a custom `skiller.toml` configuration file |
348
342
  | `--keep-backups` | Keep backup files (.bak) after restoration (default: false) |
349
343
  | `--dry-run` | Preview changes without actually reverting files |
350
344
  | `--verbose` / `-v` | Display detailed output during execution |
351
- | `--local-only` | Only search for local .ruler directories, ignore global config |
345
+ | `--local-only` | Only search for local .claude directories, ignore global config |
352
346
 
353
347
  ### Common Examples
354
348
 
355
- **Revert all ruler changes:**
349
+ **Revert all skiller changes:**
356
350
 
357
351
  ```bash
358
- ruler revert
352
+ skiller revert
359
353
  ```
360
354
 
361
355
  **Preview what would be reverted (dry-run):**
362
356
 
363
357
  ```bash
364
- ruler revert --dry-run
358
+ skiller revert --dry-run
365
359
  ```
366
360
 
367
361
  **Revert only specific agents:**
368
362
 
369
363
  ```bash
370
- ruler revert --agents claude,copilot
364
+ skiller revert --agents claude,copilot
371
365
  ```
372
366
 
373
367
  **Revert with detailed output:**
374
368
 
375
369
  ```bash
376
- ruler revert --verbose
370
+ skiller revert --verbose
377
371
  ```
378
372
 
379
373
  **Keep backup files after reverting:**
380
374
 
381
375
  ```bash
382
- ruler revert --keep-backups
376
+ skiller revert --keep-backups
383
377
  ```
384
378
 
385
- ## Configuration (`ruler.toml`) in Detail
379
+ ## Configuration (`skiller.toml`) in Detail
386
380
 
387
381
  ### Location
388
382
 
389
- Defaults to `.ruler/ruler.toml` in the project root. Override with `--config` CLI option.
383
+ Defaults to `.claude/skiller.toml` in the project root. Override with `--config` CLI option.
390
384
 
391
385
  ### Complete Example
392
386
 
@@ -476,7 +470,7 @@ enabled = false
476
470
 
477
471
  [agents.kilocode]
478
472
  enabled = true
479
- output_path = ".kilocode/rules/ruler_kilocode_instructions.md"
473
+ output_path = ".kilocode/rules/skiller_kilocode_instructions.md"
480
474
 
481
475
  [agents.warp]
482
476
  enabled = true
@@ -486,16 +480,16 @@ output_path = "WARP.md"
486
480
  ### Configuration Precedence
487
481
 
488
482
  1. **CLI flags** (e.g., `--agents`, `--no-mcp`, `--mcp-overwrite`, `--no-gitignore`)
489
- 2. **Settings in `ruler.toml`** (`default_agents`, specific agent settings, global sections)
490
- 3. **Ruler's built-in defaults** (all agents enabled, standard output paths, MCP enabled with 'merge')
483
+ 2. **Settings in `skiller.toml`** (`default_agents`, specific agent settings, global sections)
484
+ 3. **Skiller's built-in defaults** (all agents enabled, standard output paths, MCP enabled with 'merge')
491
485
 
492
486
  ## MCP (Model Context Protocol) Server Configuration
493
487
 
494
- MCP provides broader context to AI models through server configurations. Ruler can manage and distribute these settings across compatible agents.
488
+ MCP provides broader context to AI models through server configurations. Skiller can manage and distribute these settings across compatible agents.
495
489
 
496
490
  ### TOML Configuration (Recommended)
497
491
 
498
- You can now define MCP servers directly in `ruler.toml` using the `[mcp_servers.<name>]` syntax:
492
+ You can now define MCP servers directly in `skiller.toml` using the `[mcp_servers.<name>]` syntax:
499
493
 
500
494
  ```toml
501
495
  # Global MCP behavior
@@ -551,9 +545,9 @@ url = "https://api.example.com"
551
545
  Authorization = "Bearer token"
552
546
  ```
553
547
 
554
- Ruler uses this configuration with the `merge` (default) or `overwrite` strategy, controlled by `ruler.toml` or CLI flags.
548
+ Skiller uses this configuration with the `merge` (default) or `overwrite` strategy, controlled by `skiller.toml` or CLI flags.
555
549
 
556
- **Home Directory Safety:** Ruler never writes MCP configuration files outside your project root. Any historical references to user home directories (e.g. `~/.codeium/windsurf/mcp_config.json` or `~/.zed/settings.json`) have been removed; only project-local paths are targeted.
550
+ **Home Directory Safety:** Skiller never writes MCP configuration files outside your project root. Any historical references to user home directories (e.g. `~/.codeium/windsurf/mcp_config.json` or `~/.zed/settings.json`) have been removed; only project-local paths are targeted.
557
551
 
558
552
  **Note for OpenAI Codex CLI:** To apply the local Codex CLI MCP configuration, set the `CODEX_HOME` environment variable to your project’s `.codex` directory:
559
553
 
@@ -565,11 +559,11 @@ export CODEX_HOME="$(pwd)/.codex"
565
559
 
566
560
  **⚠️ Experimental Feature**: Skills support is currently experimental and requires `uv` (the Python package manager) to be installed on your system for MCP-based agent integration.
567
561
 
568
- Ruler can manage and propagate Claude Code-compatible skills to supported AI agents. Skills are stored in `.ruler/skills/` and are automatically distributed to compatible agents when you run `ruler apply`.
562
+ Skiller can manage and propagate Claude Code-compatible skills to supported AI agents. Skills are stored in `.claude/skills/` and are automatically distributed to compatible agents when you run `skiller apply`.
569
563
 
570
564
  ### How It Works
571
565
 
572
- Skills are specialized knowledge packages that extend AI agent capabilities with domain-specific expertise, workflows, or tool integrations. Ruler discovers skills in your `.ruler/skills/` directory and propagates them to compatible agents:
566
+ Skills are specialized knowledge packages that extend AI agent capabilities with domain-specific expertise, workflows, or tool integrations. Skiller discovers skills in your `.claude/skills/` directory and propagates them to compatible agents:
573
567
 
574
568
  - **Claude Code**: Skills copied to `.claude/skills/` with @filename references preserved
575
569
  - **Cursor**: Uses `.cursor/rules/` directly (copied when `merge_strategy = "cursor"`), no skillz MCP needed
@@ -580,7 +574,7 @@ Skills are specialized knowledge packages that extend AI agent capabilities with
580
574
  Skills can be organized flat or nested:
581
575
 
582
576
  ```
583
- .ruler/skills/
577
+ .claude/skills/
584
578
  ├── my-skill/
585
579
  │ ├── SKILL.md # Required: skill instructions/knowledge
586
580
  │ ├── helper.py # Optional: additional resources (scripts)
@@ -622,15 +616,17 @@ When using `[skills].generate_from_rules = true`, skills are automatically creat
622
616
  ```
623
617
 
624
618
  **Requirements for folder copying**:
619
+
625
620
  - The `.mdc` file must be in a folder with the same basename (e.g., `docx/docx.mdc`)
626
621
  - The `.mdc` file must have frontmatter with `alwaysApply: false` (or undefined)
627
622
  - All files and subdirectories in that folder (except the `.mdc` file itself) are copied
628
623
 
629
624
  **Example `.mdc` file with frontmatter**:
625
+
630
626
  ```markdown
631
627
  ---
632
628
  description: DOCX file processing utilities
633
- globs: ["**/*.docx"]
629
+ globs: ['**/*.docx']
634
630
  alwaysApply: false
635
631
  ---
636
632
 
@@ -647,13 +643,13 @@ Skills support is **enabled by default** but can be controlled via:
647
643
 
648
644
  ```bash
649
645
  # Enable skills (default)
650
- ruler apply --skills
646
+ skiller apply --skills
651
647
 
652
648
  # Disable skills
653
- ruler apply --no-skills
649
+ skiller apply --no-skills
654
650
  ```
655
651
 
656
- **Configuration in `ruler.toml`:**
652
+ **Configuration in `skiller.toml`:**
657
653
 
658
654
  ```toml
659
655
  [skills]
@@ -662,7 +658,7 @@ enabled = true # or false to disable
662
658
 
663
659
  ### Skillz MCP Server
664
660
 
665
- For agents that support MCP but don't have native skills support (excluding Claude Code and Cursor), Ruler automatically:
661
+ For agents that support MCP but don't have native skills support (excluding Claude Code and Cursor), Skiller automatically:
666
662
 
667
663
  1. Copies skills to `.skillz/` directory with @filename references expanded to full content
668
664
  2. Strips frontmatter from referenced .mdc files to avoid duplication
@@ -681,13 +677,13 @@ args = ["skillz@latest", "/absolute/path/to/project/.skillz"]
681
677
 
682
678
  ### `.gitignore` Integration
683
679
 
684
- When skills support is enabled and gitignore integration is active, Ruler automatically adds:
680
+ When skills support is enabled and gitignore integration is active, Skiller automatically adds:
685
681
 
686
- - `.claude/skills/` (when generated from `.claude/rules/` or copied from `.ruler/skills/`)
682
+ - `.claude/skills/` (when generated from `.claude/rules/` or copied from `.claude/skills/`)
687
683
  - `.skillz/` (for MCP-based agents excluding Cursor)
688
684
  - `.cursor/rules/` (when using `merge_strategy = "cursor"`)
689
685
 
690
- to your `.gitignore` file within the managed Ruler block.
686
+ to your `.gitignore` file within the managed Skiller block.
691
687
 
692
688
  **Note**: If you manually create `.claude/skills/` without `.claude/rules/`, it won't be gitignored (assumed to be versioned).
693
689
 
@@ -702,7 +698,7 @@ to your `.gitignore` file within the managed Ruler block.
702
698
 
703
699
  ### Validation
704
700
 
705
- Ruler validates discovered skills and issues warnings for:
701
+ Skiller validates discovered skills and issues warnings for:
706
702
 
707
703
  - Missing required file (`SKILL.md`)
708
704
  - Invalid directory structures (directories without `SKILL.md` and no sub-skills)
@@ -714,7 +710,7 @@ Warnings don't prevent propagation but help identify potential issues.
714
710
  Test skills propagation without making changes:
715
711
 
716
712
  ```bash
717
- ruler apply --dry-run
713
+ skiller apply --dry-run
718
714
  ```
719
715
 
720
716
  This shows which skills would be copied and which MCP servers would be configured.
@@ -723,8 +719,8 @@ This shows which skills would be copied and which MCP servers would be configure
723
719
 
724
720
  ```bash
725
721
  # 1. Add a skill to your project
726
- mkdir -p .ruler/skills/my-skill
727
- cat > .ruler/skills/my-skill/SKILL.md << 'EOF'
722
+ mkdir -p .claude/skills/my-skill
723
+ cat > .claude/skills/my-skill/SKILL.md << 'EOF'
728
724
  # My Custom Skill
729
725
 
730
726
  This skill provides specialized knowledge for...
@@ -738,7 +734,7 @@ When working on this project, always follow these guidelines:
738
734
  EOF
739
735
 
740
736
  # 2. Apply to all agents (skills enabled by default)
741
- ruler apply
737
+ skiller apply
742
738
 
743
739
  # 3. Skills are now available to compatible agents:
744
740
  # - Claude Code: .claude/skills/my-skill/
@@ -747,12 +743,12 @@ ruler apply
747
743
 
748
744
  ## `.gitignore` Integration
749
745
 
750
- Ruler automatically manages your `.gitignore` file to keep generated agent configuration files out of version control.
746
+ Skiller automatically manages your `.gitignore` file to keep generated agent configuration files out of version control.
751
747
 
752
748
  ### How it Works
753
749
 
754
750
  - Creates or updates `.gitignore` in your project root
755
- - Adds paths to a managed block marked with `# START Ruler Generated Files` and `# END Ruler Generated Files`
751
+ - Adds paths to a managed block marked with `# START Skiller Generated Files` and `# END Skiller Generated Files`
756
752
  - Preserves existing content outside this block
757
753
  - Sorts paths alphabetically and uses relative POSIX-style paths
758
754
 
@@ -763,12 +759,12 @@ Ruler automatically manages your `.gitignore` file to keep generated agent confi
763
759
  node_modules/
764
760
  *.log
765
761
 
766
- # START Ruler Generated Files
762
+ # START Skiller Generated Files
767
763
  .aider.conf.yml
768
764
  .clinerules
769
765
  AGENTS.md
770
766
  CLAUDE.md
771
- # END Ruler Generated Files
767
+ # END Skiller Generated Files
772
768
 
773
769
  dist/
774
770
  ```
@@ -776,7 +772,7 @@ dist/
776
772
  ### Control Options
777
773
 
778
774
  - **CLI flags**: `--gitignore` or `--no-gitignore`
779
- - **Configuration**: `[gitignore].enabled` in `ruler.toml`
775
+ - **Configuration**: `[gitignore].enabled` in `skiller.toml`
780
776
  - **Default**: enabled
781
777
 
782
778
  ## Practical Usage Scenarios
@@ -784,16 +780,16 @@ dist/
784
780
  ### Scenario 1: Getting Started Quickly
785
781
 
786
782
  ```bash
787
- # Initialize Ruler in your project
783
+ # Initialize Skiller in your project
788
784
  cd your-project
789
- ruler init
785
+ skiller init
790
786
 
791
787
  # Edit the generated files
792
- # - Add your coding guidelines to .ruler/AGENTS.md (or keep adding additional .md files)
793
- # - Customize .ruler/ruler.toml if needed
788
+ # - Add your coding guidelines to .claude/AGENTS.md (or keep adding additional .md files)
789
+ # - Customize .claude/skiller.toml if needed
794
790
 
795
791
  # Apply rules to all AI agents
796
- ruler apply
792
+ skiller apply
797
793
  ```
798
794
 
799
795
  ### Scenario 2: Complex Projects with Nested Rules
@@ -801,53 +797,53 @@ ruler apply
801
797
  For large projects with multiple components or services, enable nested rule loading so each directory keeps its own rules and MCP bundle:
802
798
 
803
799
  ```bash
804
- # Set up nested .ruler directories
805
- mkdir -p src/.ruler tests/.ruler docs/.ruler
800
+ # Set up nested .claude directories
801
+ mkdir -p src/.claude tests/.claude docs/.claude
806
802
 
807
803
  # Add component-specific instructions
808
- echo "# API Design Guidelines" > src/.ruler/api_rules.md
809
- echo "# Testing Best Practices" > tests/.ruler/test_rules.md
810
- echo "# Documentation Standards" > docs/.ruler/docs_rules.md
804
+ echo "# API Design Guidelines" > src/.claude/api_rules.md
805
+ echo "# Testing Best Practices" > tests/.claude/test_rules.md
806
+ echo "# Documentation Standards" > docs/.claude/docs_rules.md
811
807
  ```
812
808
 
813
809
  ```toml
814
- # .ruler/ruler.toml
810
+ # .claude/skiller.toml
815
811
  nested = true
816
812
  ```
817
813
 
818
814
  ```bash
819
- # The CLI inherits nested mode from ruler.toml
820
- ruler apply --verbose
815
+ # The CLI inherits nested mode from skiller.toml
816
+ skiller apply --verbose
821
817
 
822
818
  # Override from the CLI at any time
823
- ruler apply --no-nested
819
+ skiller apply --no-nested
824
820
  ```
825
821
 
826
- This creates context-specific instructions for different parts of your project while maintaining global rules in the root `.ruler/` directory. Nested runs automatically keep every nested config enabled even if a child tries to disable it.
822
+ This creates context-specific instructions for different parts of your project while maintaining global rules in the root `.claude/` directory. Nested runs automatically keep every nested config enabled even if a child tries to disable it.
827
823
 
828
824
  > [!NOTE]
829
825
  > The CLI prints "Nested mode is experimental and may change in future releases." the first time nested processing runs. Expect refinements in future versions.
830
826
 
831
827
  ### Scenario 3: Team Standardization
832
828
 
833
- 1. Create `.ruler/coding_standards.md`, `.ruler/api_usage.md`
834
- 2. Commit the `.ruler` directory to your repository
835
- 3. Team members pull changes and run `ruler apply` to update their local AI agent configurations
829
+ 1. Create `.claude/coding_standards.md`, `.claude/api_usage.md`
830
+ 2. Commit the `.claude` directory to your repository
831
+ 3. Team members pull changes and run `skiller apply` to update their local AI agent configurations
836
832
 
837
833
  ### Scenario 4: Project-Specific Context for AI
838
834
 
839
- 1. Detail your project's architecture in `.ruler/project_overview.md`
840
- 2. Describe primary data structures in `.ruler/data_models.md`
841
- 3. Run `ruler apply` to help AI tools provide more relevant suggestions
835
+ 1. Detail your project's architecture in `.claude/project_overview.md`
836
+ 2. Describe primary data structures in `.claude/data_models.md`
837
+ 3. Run `skiller apply` to help AI tools provide more relevant suggestions
842
838
 
843
839
  ### Integration with NPM Scripts
844
840
 
845
841
  ```json
846
842
  {
847
843
  "scripts": {
848
- "ruler:apply": "ruler apply",
849
- "dev": "npm run ruler:apply && your_dev_command",
850
- "precommit": "npm run ruler:apply"
844
+ "skiller:apply": "skiller apply",
845
+ "dev": "npm run skiller:apply && your_dev_command",
846
+ "precommit": "npm run skiller:apply"
851
847
  }
852
848
  }
853
849
  ```
@@ -855,14 +851,14 @@ This creates context-specific instructions for different parts of your project w
855
851
  ### Integration with GitHub Actions
856
852
 
857
853
  ```yaml
858
- # .github/workflows/ruler-check.yml
859
- name: Check Ruler Configuration
854
+ # .github/workflows/skiller-check.yml
855
+ name: Check Skiller Configuration
860
856
  on:
861
857
  pull_request:
862
- paths: ['.ruler/**']
858
+ paths: ['.claude/**']
863
859
 
864
860
  jobs:
865
- check-ruler:
861
+ check-skiller:
866
862
  runs-on: ubuntu-latest
867
863
  steps:
868
864
  - uses: actions/checkout@v4
@@ -871,17 +867,17 @@ jobs:
871
867
  node-version: '18'
872
868
  cache: 'npm'
873
869
 
874
- - name: Install Ruler
875
- run: npm install -g @udecode/ruler
870
+ - name: Install Skiller
871
+ run: npm install -g skiller
876
872
 
877
- - name: Apply Ruler configuration
878
- run: ruler apply --no-gitignore
873
+ - name: Apply Skiller configuration
874
+ run: skiller apply --no-gitignore
879
875
 
880
876
  - name: Check for uncommitted changes
881
877
  run: |
882
878
  if [[ -n $(git status --porcelain) ]]; then
883
- echo "::error::Ruler configuration is out of sync!"
884
- echo "Please run 'ruler apply' locally and commit the changes."
879
+ echo "::error::Skiller configuration is out of sync!"
880
+ echo "Please run 'skiller apply' locally and commit the changes."
885
881
  exit 1
886
882
  fi
887
883
  ```
@@ -892,8 +888,8 @@ jobs:
892
888
 
893
889
  **"Cannot find module" errors:**
894
890
 
895
- - Ensure Ruler is installed globally: `npm install -g @udecode/ruler`
896
- - Or use `npx @udecode/ruler`
891
+ - Ensure Skiller is installed globally: `npm install -g skiller`
892
+ - Or use `npx skiller@latest`
897
893
 
898
894
  **Permission denied errors:**
899
895
 
@@ -901,13 +897,13 @@ jobs:
901
897
 
902
898
  **Agent files not updating:**
903
899
 
904
- - Check if the agent is enabled in `ruler.toml`
900
+ - Check if the agent is enabled in `skiller.toml`
905
901
  - Verify agent isn't excluded by `--agents` flag
906
902
  - Use `--verbose` to see detailed execution logs
907
903
 
908
904
  **Configuration validation errors:**
909
905
 
910
- - Ruler now validates `ruler.toml` format and will show specific error details
906
+ - Skiller now validates `skiller.toml` format and will show specific error details
911
907
  - Check that all configuration values match the expected types and formats
912
908
 
913
909
  ### Debug Mode
@@ -915,7 +911,7 @@ jobs:
915
911
  Use `--verbose` flag to see detailed execution logs:
916
912
 
917
913
  ```bash
918
- ruler apply --verbose
914
+ skiller apply --verbose
919
915
  ```
920
916
 
921
917
  This shows:
@@ -931,36 +927,36 @@ This shows:
931
927
  A: Currently, all agents receive the same concatenated rules. For agent-specific instructions, include sections in your rule files like "## GitHub Copilot Specific" or "## Aider Configuration".
932
928
 
933
929
  **Q: How do I set up different instructions for different parts of my project?**
934
- A: Enable nested mode either by setting `nested = true` in `ruler.toml` or by passing `ruler apply --nested`. The CLI inherits the config setting by default, but `--no-nested` always wins if you need to opt out for a run. Nested mode keeps loading rules (and MCP settings) from every `.ruler/` directory in the hierarchy, forces child configs to remain nested, and logs "Nested mode is experimental and may change in future releases." if any nested processing occurs.
930
+ A: Enable nested mode either by setting `nested = true` in `skiller.toml` or by passing `skiller apply --nested`. The CLI inherits the config setting by default, but `--no-nested` always wins if you need to opt out for a run. Nested mode keeps loading rules (and MCP settings) from every `.claude/` directory in the hierarchy, forces child configs to remain nested, and logs "Nested mode is experimental and may change in future releases." if any nested processing occurs.
935
931
 
936
- **Q: How do I temporarily disable Ruler for an agent?**
937
- A: Set `enabled = false` in `ruler.toml` under `[agents.agentname]`, or use `--agents` flag to specify only the agents you want.
932
+ **Q: How do I temporarily disable Skiller for an agent?**
933
+ A: Set `enabled = false` in `skiller.toml` under `[agents.agentname]`, or use `--agents` flag to specify only the agents you want.
938
934
 
939
935
  **Q: What happens to my existing agent configuration files?**
940
- A: Ruler creates backups with `.bak` extension before overwriting any existing files.
936
+ A: Skiller creates backups with `.bak` extension before overwriting any existing files.
941
937
 
942
- **Q: Can I run Ruler in CI/CD pipelines?**
943
- A: Yes! Use `ruler apply --no-gitignore` in CI to avoid modifying `.gitignore`. See the GitHub Actions example above.
938
+ **Q: Can I run Skiller in CI/CD pipelines?**
939
+ A: Yes! Use `skiller apply --no-gitignore` in CI to avoid modifying `.gitignore`. See the GitHub Actions example above.
944
940
 
945
941
  **Q: How does OpenHands MCP propagation classify servers?**
946
942
  A: Local stdio servers become `stdio_servers`. Remote URLs containing `/sse` are classified as `sse_servers`; others become `shttp_servers`. Bearer tokens in an `Authorization` header are extracted into `api_key` where possible.
947
943
 
948
944
  **Q: Where is Zed configuration written now?**
949
- A: Ruler writes a `settings.json` in the project root (not the user home dir) and transforms MCP server definitions to Zed's `context_servers` format including `source: "custom"`.
945
+ A: Skiller writes a `settings.json` in the project root (not the user home dir) and transforms MCP server definitions to Zed's `context_servers` format including `source: "custom"`.
950
946
 
951
947
  **Q: What changed about MCP initialization?**
952
- A: `ruler init` now only adds example MCP server sections to `ruler.toml` instead of creating `.ruler/mcp.json`. The JSON file is still consumed if present, but TOML servers win on name conflicts.
948
+ A: `skiller init` now only adds example MCP server sections to `skiller.toml` instead of creating `.claude/mcp.json`. The JSON file is still consumed if present, but TOML servers win on name conflicts.
953
949
 
954
950
  **Q: Is Kiro supported?**
955
- A: Yes. Kiro receives concatenated rules at `.kiro/steering/ruler_kiro_instructions.md`.
951
+ A: Yes. Kiro receives concatenated rules at `.kiro/steering/skiller_kiro_instructions.md`.
956
952
 
957
953
  ## Development
958
954
 
959
955
  ### Setup
960
956
 
961
957
  ```bash
962
- git clone https://github.com/udecode/ruler.git
963
- cd ruler
958
+ git clone https://github.com/udecode/skiller.git
959
+ cd skiller
964
960
  npm install
965
961
  npm run build
966
962
  ```